ThinkPHP 5.1+PHPSocket.IO实现websocket搭建聊天室+私聊

关于使用ThinkPHP 5.1 + PHPSocket.IO搭建简单的websocket聊天案例见之前的一篇文章(ThinkPHP 5.1下使用PHPSocket.IO实现websocket通讯),在此基础上做了较大的更新,本项目github地址:

https://github.com/hsu1943/thinksocketio

本项目持续更新,有用到的朋友不要忘了点一下STAR,谢谢!

鉴于大家对这一功能是需求很多,对之前的简单的消息推送做了功能更新,主要功能在下面,前端界面实在看不下去,仅仅实现功能,更多的是让大家理解如何去搭建。

部分功能截图

公频聊天:

websocket聊天室

一对一私聊

websocket一对一私聊

三客户端

ThinkPHP 5.1+PHPSocket.IO实现websocket多人聊天及私聊

目前功能(截至2019年1月23日)

  1. 公频聊天
  2. 一对一私聊
  3. 加入聊天室提示
  4. 离开聊天室提示
  5. 私聊消息在公频提醒

数据库

为了记录聊天记录使用了两张数据表,如果不需要记录可以将代码中写入消息操作的代码注释即可。

公频消息记录msg表

CREATE TABLE `msg` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `msg` varchar(250) DEFAULT NULL COMMENT '客户端推送过来的消息',
  `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '消息发送时间',
  `username` varchar(255) DEFAULT NULL COMMENT '客户端username',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=202 DEFAULT CHARSET=utf8mb4 COMMENT='公频消息记录';

私聊消息记录private_chat表

CREATE TABLE `private_chat` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `msg` varchar(255) DEFAULT NULL COMMENT '消息',
  `from` varchar(255) DEFAULT NULL COMMENT '来自用户',
  `to` varchar(255) DEFAULT NULL COMMENT '发送给用户',
  `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '发送时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8mb4 COMMENT='私聊消息记录';

后期计划加入功能

  1. 聊天室人数统计
  2. 私聊消息提醒
  3. 自定义用户昵称
  4. 历史消息查看
  5. 输入中状态提示

以上功能会陆续加入,视博主时间而定,具体更新时间不做承诺。本文会随着功能更新保持更新,以下内容未更新记录。

UPDATE

发表评论

电子邮件地址不会被公开。 必填项已用*标注