一款使用VUE打造的内网办公聊天工具,支持发送图片、文件,群聊,离线消息,消息提醒;类似于WEB版微信
基于 GatewayWorker 的聊天工具的服务端(php)
开源地址:(码云)前端代码https://gitee.com/qice/qchat后端代码https://gitee.com/qice/QchatServer
也可以我打包的代码,不需要下载券,基本与码云一致:https://download.csdn.net/download/weixin_44142296/12563778
网上有很多,比如:
linux下使用yum安装新版php7.0
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
linux 安装redis 完整步骤
redis为了存储qchat中的聊天记录、群聊等消息。
在qchat的服务端/qchat/server/QchatServer/Applications/chat/config/redis.php里面配置了redis的1号库,而不是默认的0号库,查看时记得select 1 。
apache或者nginx,为了能访问到服务器页面,将vue编译好的dist目录转发,使浏览器可以访问到index.html。其中index.html中的ws://的websocket路径需要变更,后续详细描述。
使用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 install的时候比较慢 ,可以查看是否有npm代理
博客园:npm添加代理和取消代理
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
3.2 浏览器能访问到的dist目录(即apache中vhost下的dist目录或者nginx指定的目录)下的index.html中的var wsUrl = 'wss://www.chuai.com:8800’和var uploadConfig两个变量需要更改成相应地址
先修改 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
# 登录
{
"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"}
def:record: 是聊天记录的前缀,后面的qun2是群的name,
第2条的\xe7\xbe\xa4\xe8\x81\x8a1是中文编码。
该值是redis的列表类型List,使用 如下命令可以查看聊天记录
lrange def:record:qun2 0 -1
def:friend: 是好友列表的前缀,后面的chuai是用户的name,
该值是redis的hash类型,使用 如下命令可查看所有的好友列表及群聊列表
hgetAll def:friend:chuai
hget def:friend:chuai qun2
hdel def:friend:chuai qun2
def:user 是所有用户信息,包括账号、密码、头像等
该值是redis的hash类型,使用 如下命令可查看所有的用户信息
hgetall def:user
或者
hget def:user chuai
def:group 是所有群聊成员信息,即该群里包含的用户
该值是redis的hash类型,使用 如下命令可查看所有的群聊成员信息
hgetall def:group
或者
hget def:group qun2