JavaScript websocket 实例
实例:
即时通讯聊天室demo可以打开两个页面互相发送消息查看。
websocket.js
/* 判断浏览器是否内置了websocket */if ('WebSocket' in window) {websocket = new WebSocket('ws://180.76.144.202:19910/websocket');}websocket->onerror = 'onerror';websocket->onopen = 'onopen';websocket->onmessage = 'onmessage';websocket->onclose = 'onclose';websocket->onbeforeunload = 'onbeforeunload';websocket->closeWebSocket = 'closeWebSocket';weboskcet->send = 'send';/* 连接失败时触发 */function onerror () {setMessageInnerHTML('websocket connection error');}/* 连接成功时触发 */function onopen () {setMessageInnerHTML('websocket connect success');}/* 收到新消息时触发 */function onmessage (event) {setMessageInnerHTML(event);}/* 连接关闭时触发 */function onclose () {setMessageInnerHTML('websocket connectionn closed');}/* 当窗口关闭时,主动关闭websocket连接。防止连接还没断开就关闭窗口,server端异常 */function onbeforeunload () {closeWebSocket();}/* 关闭websocket连接 */function closeWebSocket () {websocket.close();}/* 发送消息 */function send () {var message = document.getElementById('container').value;websocket.send(message);}
instance.php:
<?phprequire_once "../../MeepoPS/index.php";$telnet = new \MeepoPS\Api\Websocket("0.0.0.0", 19910);$telnet->instanceName = "MeepoPS-Websocket";$telnet->callbackStartInstance = "callbackStartInstance";
$telnet->callbackConnect = "callbackConnect";
$telnet->callbackNewData = "callbackNewData";
$telnet->callbackSendBackBufferEmpty = "callbackSendBackBufferEmpty";
$telnet->callbackInstanceStop = "callbackInstanceStop";
$telnet->callbackConnectClose = "callbackConnectClose";function callbackStartInstance ($instance)
{echo "实例" . $instance->instanceName . "启动" . "\n";
}function callbackConnect ($connect)
{foreach ($connect->instance->clientList as $client) {if ($connect->id != $client->id) {$client->send("新用户" . $connect->id . "已经上线");}}var_dump("收到新链接. UniqueId = " . $connect->id . "\n");
}function callbackNewData ($connect, $data)
{// $connect->send("用户 " . $connect->id . "说:" . $data . "\n");var_dump("UnqiueId = " . $connect->id . "说:" . $data ."\n");foreach ($connect->instance->clientList as $client) {if ($connect->id != $client->id) {$client->send("群发:用户" . $connect->id . "说: " . $data . "\n");}}}function callbackSendBufferEmpty ($connect)
{var_dump("用户 " . $connect->id . "的发送的消息队列为空\n");
}function callbackInstanceStop ($instance)
{foreach ($instance->clientList as $client) {$client->send("Service stop!");}
}\MeepoPS\runMeepoPS();
服务可以用MeepoPS/SWOOLE搭建:
下面是MeepoPS实例
// 下载MeepoPSgit clone https://github.com/lixuancn/MeepoPS.git
// 进入目录cd MeepoPS/Example/Chat_Robot // 普通模式启动:sudo php instance.php start // 守护进程模式启动:sudo php instance.php start -d 守护进程启动下:ps -aux | grep php 能看到instance.php 说明启动成功了。 注意浏览器访问的端口和instance.php 端口一致。例如 centos 7 防护墙查看端口19911 是否开启: // 查看防火墙状态:systemctl status firewalld.service // 开启端口19911firewalld-cmd --permanent --zone=public --add-port=19911/tcp // 重启防火墙查看端口: systemctl restart firewalld.servicefirewall-cmd --query-port=19910/tcp 如果出现yes即为开启成功。 打开浏览器访问websocket.js,控制台查看log.
转载于:https://www.cnblogs.com/phpcurd/p/9216541.html
JavaScript websocket 实例相关推荐
- Java Websocket实例【服务端与客户端实现全双工通讯】
Java Websocket实例[服务端与客户端实现全双工通讯] 现很多网站为了实现即时通讯,所用的技术都是轮询(polling).轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP ...
- c#--Fleck WebSocket使用 (C#版Websocket实例)
推荐几篇文章: WebSocket 实战 C#版Websocket实例 C#工作总结(一):Fleck的WebSocket使用 1.服务端代码 using Fleck; using System; u ...
- html,css,js小实例,CSS和JavaScript脚本实例
CSS和JavaScript脚本实例 导语:CSS样式和JavaScript脚本是应该放在外部文件中呢?还是把它们放在页面本身之内呢?以下的是百分网小编为大家搜集的CSS样式和JavaScript脚本 ...
- 超多树形结构的JavaScript菜单实例
超多树形结构的JavaScript菜单实例,树控菜单,有大家常用的展开折叠型,也就是节点树:还有的是多级的菜单,类似树型,右键菜单树,还有的是悬浮层树,都比较不错,希望大家喜欢. http://www ...
- java 代码压缩javascript_通过Java压缩JavaScript代码实例分享
通过移除空行和注释来压缩 javascript 代码 /** * this file is part of the echo web application framework (hereinafte ...
- JavaScript --函数 (实例结合)
JavaScript --函数 (实例结合) 文章目录 JavaScript --函数 (实例结合) 1.初识函数 2.参数设置 3.函数的调用 [案例]字符串大小写转换 4.变量的作用域 5.匿名函 ...
- JavaScript 常用实例
阅读目录 阐述 JavaScript 常用实例 字符串操作 去除字符串空格 字母大小写切换 字符串循环复制 字符串替换 替换 * 检测字符串 检测密码强度 随机码(toString详解) 查找字符串次 ...
- 简单计算器——JavaScript小实例
简单计算器--JavaScript小实例 先来看一下下我们要做的计算器(以iQOO neo5手机计算器为例): 这就是我们今天要做的计算器的模板,成品的样子会略有不同,但功能完善. 好,当我们看到这个 ...
- JavaScript构造函数, 实例和静态成员
JavaScript构造函数, 实例和静态成员 构造函数 实例成员 静态成员 内置构造函数 引用类型 Object Array 包装类型 String Number 构造函数 构造函数是专门用于创建对 ...
最新文章
- 计算机php外文翻译,php外文翻译.doc
- golang LMDB入门例子——key range查询
- 开关电源反馈环路设计matlab,开关电源控制环路设计(初级篇).pdf
- CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)
- 一次SSH爆破攻击haiduc工具的应急响应
- ng build command not found(ng命令到底是什么鬼)
- mysql备份更换存储引擎_mysql数据库innodb存储引擎备份脚本
- 2018-12-25 上机作业
- VUE3(template使用)
- 数据库工作笔记017---还记得Oracle悲观锁和乐观锁嘛?以及hibernate对乐观悲观锁的封装
- 百度云部署SSL证书
- 消息队列实现socket 消息同步_消息队列二三事
- SPSS个案处理插件v1.0 用SPSS构造Bootstrap样本
- 教育机构计算机机房制度,现代教育与信息技术中心机房管理制度
- Vs2010创建网站
- 用计算机算锐角三角比,锐角三角比中计算器使用方法ppt
- php抓取新浪数据,新浪新闻详情页的数据抓取实例
- 流利阅读12.31 The science of giving gifts your loved ones won’t want to return
- JAVA音程_下列选项中哪个音程是减三和弦?
- 如何在vscode中优雅的编写C语言