qchat安装部署详解(基于Workerman、VUE、GatewayWorker的开源实时聊天插件)

一款使用VUE打造的内网办公聊天工具,支持发送图片、文件,群聊,离线消息,消息提醒;类似于WEB版微信
基于 GatewayWorker 的聊天工具的服务端(php)
开源地址:(码云)前端代码https://gitee.com/qice/qchat后端代码https://gitee.com/qice/QchatServer

也可以我打包的代码,不需要下载券,基本与码云一致:https://download.csdn.net/download/weixin_44142296/12563778

qchat安装部署

  • 1 后端软件
    • php 7.0.33
    • redis 5.0.7
    • apache或者nginx
  • 2 前端软件
    • nodejs 8.17.0
    • npm 6.13.4
  • 3 https及wss
  • 4 启动方法:
    • 前端:
    • 后端:
  • 5 websocket接口协议
  • 6 redis中的数据
    • 1)聊天记录
      • def:record:qun2
    • 2)会话列表
      • def:friend:chuai
    • 3)用户列表
      • def:user
    • 4)群聊列表
      • def:group

1 后端软件

php 7.0.33

网上有很多,比如:
linux下使用yum安装新版php7.0
qchat安装部署详解(基于Workerman、VUE、GatewayWorker的开源实时聊天插件)_第1张图片

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
yum install php70w-common php70w-fpm php70w-opcache php70w-gd php70w-mysqlnd php70w-mbstring php70w-pecl-redis php70w-pecl-memcached php70w-devel

然后需要安装qchat要求的pcntl、posix扩展

yum install php-pcntl, php-posix

redis 5.0.7

linux 安装redis 完整步骤
redis为了存储qchat中的聊天记录、群聊等消息。
在qchat的服务端/qchat/server/QchatServer/Applications/chat/config/redis.php里面配置了redis的1号库,而不是默认的0号库,查看时记得select 1 。
在这里插入图片描述

apache或者nginx

apache或者nginx,为了能访问到服务器页面,将vue编译好的dist目录转发,使浏览器可以访问到index.html。其中index.html中的ws://的websocket路径需要变更,后续详细描述。

2 前端软件

nodejs 8.17.0

使用nvm安装node:
github地址:https://github.com/nvm-sh/nvm

简书:linux下安装nvm进行node的版本的快速切换

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

然后

source ~/.bashrc

在Linux上,运行安装脚本后,如果nvm: command not found在键入时没有收到终端的反馈command -v nvm,只需关闭当前终端,打开新的终端,然后尝试再次进行验证。

2、通过命令 nvm --version 可查看版本,说明安装成功

3、通过 nvm ls-remote可查看node所有版本

4、通过 nvm install (版本号) 例如:nvm install v8.17.0

5、安装后可通过node -v ,npm -v 查看版本,说明安装成功

npm 6.13.4

npm install的时候比较慢 ,可以查看是否有npm代理
博客园:npm添加代理和取消代理
qchat安装部署详解(基于Workerman、VUE、GatewayWorker的开源实时聊天插件)_第2张图片

3 https及wss

workerman怎么配置wss
3.1 /qchat/server/QchatServer/Applications/chat/start_gateway.php中配置wss,将证书的绝对路径写到local_cert和local_pk对应位置
注意:ws协议是ip+端口,wss协议必须是域名+端口

ws://127.0.0.1:8800
wss://www.chuai.com:8800

qchat安装部署详解(基于Workerman、VUE、GatewayWorker的开源实时聊天插件)_第3张图片
3.2 浏览器能访问到的dist目录(即apache中vhost下的dist目录或者nginx指定的目录)下的index.html中的var wsUrl = 'wss://www.chuai.com:8800’和var uploadConfig两个变量需要更改成相应地址

4 启动方法:

前端:

先修改 index.html 文件中,wsUrl 和 uploadConfig 这两个地址,分别为WS服务器地址 及文件上传的地址

// 三步曲
//下载依赖
npm install
//测试环境
npm run dev
//正式环境
npm run build

将run之后产生的dist文件放置到浏览器能访问的目录,如apache httpd的vhost目录下。

后端:

修改 Applications/chat/config/redis.php 配置文件,改为自己的redis地址,如果是本机可以不用改
在/qchat/server/QchatServer目录下,运行如下命令启动服务器

php start.php start -d

如要停止:

php start.php stop

如使用kill php的进程的方式关闭,需监控:
8800端口和1238端口

netstat -nalp |grep 8800
netstat -nalp |grep 1238

qchat安装部署详解(基于Workerman、VUE、GatewayWorker的开源实时聊天插件)_第4张图片
将相关的进程全部关闭方可再次启动。

5 websocket接口协议

# 登录
{
     "type":"login","name":"chuai","passwd":"chuai"}

# 好友列表,聊天的列表
{
     "type":"friend_list"}

# 通知在线,全部用户列表
{
     "type":"user_list","online":1}

# 获取消息内容,chuai发过来的消息
{
     "type":"msg_list","group":false,"from":"chuai", "to":"admin"}

# 设置信息全部读取完成
{
     "type":"mark_read","from":"chuai","to":"admin"}

# 发送消息
{
     "type":"txt","from":"admin","to":"chuai","msg":"this is test","name":"聊天名字"}

# 发起群聊
{
     "type":"join_group","create":true,"from":"admin","group_name":"XX群名字","users":["chuai","demo","admin"]}

# 发送群消息
{
     "type":"txt","from":"admin", "to":"@XX群名字","msg":"hello","name":"admin"}

# 创建用户
{
     "type":"update_user","name":"demo","passwd":"demo"}

6 redis中的数据

qchat安装部署详解(基于Workerman、VUE、GatewayWorker的开源实时聊天插件)_第5张图片qchat安装部署详解(基于Workerman、VUE、GatewayWorker的开源实时聊天插件)_第6张图片
解析:

1)聊天记录

def:record:qun2

def:record: 是聊天记录的前缀,后面的qun2是群的name,
第2条的\xe7\xbe\xa4\xe8\x81\x8a1是中文编码。
该值是redis的列表类型List,使用 如下命令可以查看聊天记录

lrange def:record:qun2 0 -1

2)会话列表

def:friend:chuai

def:friend: 是好友列表的前缀,后面的chuai是用户的name,
该值是redis的hash类型,使用 如下命令可查看所有的好友列表及群聊列表

hgetAll def:friend:chuai

qchat安装部署详解(基于Workerman、VUE、GatewayWorker的开源实时聊天插件)_第7张图片
所有redis的hash操作都是可以的,比如

hget def:friend:chuai qun2
hdel def:friend:chuai qun2

3)用户列表

def:user

def:user 是所有用户信息,包括账号、密码、头像等
该值是redis的hash类型,使用 如下命令可查看所有的用户信息

hgetall def:user
或者
hget def:user chuai

4)群聊列表

def:group

def:group 是所有群聊成员信息,即该群里包含的用户
该值是redis的hash类型,使用 如下命令可查看所有的群聊成员信息

hgetall def:group
或者
hget def:group qun2

qchat安装部署详解(基于Workerman、VUE、GatewayWorker的开源实时聊天插件)_第8张图片

你可能感兴趣的:(qchat,qchat,即时通讯,实时通讯,实时通信,聊天室)