PHP 使用 swoole 实现即时通讯 demo,以及聊天室实现方式
服务端代码
ini_set('display_errors', 1);
error_reporting(E_ALL);
$ws = new swoole_websocket_server("0.0.0.0", 8080);
//监听WebSocket连接打开事件 客户端 onopen 触发此事件
$ws->on('open', function ($ws, $request) {
var_dump($request->fd, $request->get, $request->server);
$ws->push($request->fd, "hello, welcome\n");
});
//监听WebSocket消息事件 客户端 send() 方法触发此事件
$ws->on('message', function ($ws, $frame) {
echo "Message: {$frame->data}\n";
$ws->push($frame->fd, "server: {$frame->data}");//以 fd 为标识发给客户端 触发客户端 onmessage 事件
});
//监听WebSocket连接关闭事件
$ws->on('close', function ($ws, $fd) {
echo "client-{$fd} is closed\n";
});
$ws->start();
客户端代码
<input id='msg'>
<h1 οnclick='send()'>发送</h1>
<script>
var wsServer = 'ws://47.106.184.48:8080';
var websocket = new WebSocket(wsServer);
websocket.onopen = function (evt) {//链接成功事件
console.log("Connected to WebSocket server.",'evt:'+evt);
};
websocket.onclose = function (evt) {//关闭链接事件
console.log("Disconnected",'evt:'+evt);
};
websocket.onmessage = function (evt) {//接收消息事件 服务端 push事件 触发此事件
console.log('Retrieved data from server: ' + evt.data);
};
websocket.onerror = function (evt, e) {//发生错误后的事件
console.log('Error occured: ' + evt.data);
};
console.log(websocket);
function send(){
let v = document.getElementById('msg').value;
websocket.send(v);//触发 服务端 message 事件
}
</script>
安装 swoole 扩展后
php youServerFile.php
聊天室功能,则是以 fd 群发消息就 ok
PHP 使用 swoole 实现即时通讯 demo,以及聊天室实现方式相关推荐
- 即时通讯 音视频聊天室开发建议
目前网上视频聊天室.视频会议软件.可视IP电话软件随处可见,你是否想自己做一个玩玩?其实这类软件无非是视频加上网络而建成的.如果熟悉视频捕 捉和网络传输技术,根本就难不倒你.本文详细介绍了如何利用别人 ...
- 融云即时通讯之直播聊天室
前言 做直播当然少不了聊天功能,融云直播聊天室支持消息类型包括文字.语音.图片.点赞.礼物.弹幕等,也支持通过自定义消息实现自已的业务逻辑:支持聊天室用户管理功能,包括创建.加入.销毁.禁言.查询.封 ...
- ThinkPHP框架整合环信即时通讯DEMO
环信成立于2013年4月,是一家全通讯能力云服务提供商.产品包括全球最大的即时通讯云 PaaS 平台--环信即时通讯云. 最近在工作中遇到要整合环信即时通讯,通过在网上搜索没有搜到特别全的案例,故此自 ...
- 微信小程序接入腾讯云IM即时通讯(获取聊天历史记录开发步骤)
微信小程序接入腾讯云IM即时通讯(获取聊天历史记录开发步骤) 1.先看文档: 获取 C2C 历史消息 :https://cloud.tencent.com/document/product/269/1 ...
- PHP+Workerman即时通讯技术:在线聊天/客服/访客功能
PHP+Workerman即时通讯技术:在线聊天/客服/访客功能 1:客服端 2:客户端 3:多访客 4:聊天表情 客服端 http://videolaravel.zwzgjl.com/index.p ...
- 安卓集成腾讯即时通信IM完成聊天室功能
安卓集成腾讯即时通信IM完成聊天室功能 没有效果图的文章都是扯淡 **请将下面的MainActivity的代码复制到源码里面,替换掉源码的MainActivity.class** 话不多说,下来上代码 ...
- IM即时通信多房间聊天室仿微信聊天(二)
IM即时通信多房间聊天室仿微信聊天(服务器自定义处理客户端消息) 在IM即时通信多房间聊天室仿微信聊天(一)中我们已经搭建了基本的通信架构,接下来重点就是如何在自己的后台接收并处理客户端用户的消息了 ...
- IM即时通信多房间聊天室仿微信聊天(四)
聊天记录的保存和展示 IM即时通信多房间聊天室仿微信聊天(一) IM即时通信多房间聊天室仿微信聊天(二) IM即时通信多房间聊天室仿微信聊天(三) 聊天消息的保存我们直接在服务端接收到客户端发送的消息 ...
- 小程序如何集成即构IM实现即时通讯发消息聊天
之前的文章已经介绍了如何实现Web端的即时通讯IM,为了让大家全面的体验通信互动的快乐. 本文介绍如何使用 ZIM SDK 快速实现实现小程序端的基本的消息收发功能,在微信中实现一个mini版微信,也 ...
最新文章
- CMD 输入中文看不到输入法的解决方法
- 【转】深入研究java.lang.Class类
- eclipse安装Eclipse HTML Editor插件
- Linux state 方式 安装nginx 服务
- olr 性能调优 NO_NORMS
- 6个经典的JavaScript报错分析
- 面试题 17.24. 最大子矩阵
- react jest测试_如何使用React测试库和Jest开始测试React应用
- 三个监控linux网卡流量脚本
- 尽量少一点甲方思维,也尽量少一点弱势方思维
- 反射--笔记(第一篇)
- 从zabbix的数据库获取数据
- C语言bit位取反,c语言位操作bit位置0置1
- Source Code Pro一款堪称完美的编程字体
- 虚拟机安装教程win10_Parallels Desktop如何安装windowns系统?PD虚拟机安装win10系统详细教程
- 如何查看泛泰A870高通骁龙600(APQ8064T)的CPU体质(A850/A860也可参考)
- oracle性能调优之--Oracle 10g AWR 配置
- GAN入门实例【个人理解】
- 徐亦达老师机器学习课程
- linux连接交换机命令,Linux连接路由器交换机防火墙Console接口的5个实用命令