实例:
即时通讯聊天室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 实例相关推荐

  1. Java Websocket实例【服务端与客户端实现全双工通讯】

    Java Websocket实例[服务端与客户端实现全双工通讯] 现很多网站为了实现即时通讯,所用的技术都是轮询(polling).轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP ...

  2. c#--Fleck WebSocket使用 (C#版Websocket实例)

    推荐几篇文章: WebSocket 实战 C#版Websocket实例 C#工作总结(一):Fleck的WebSocket使用 1.服务端代码 using Fleck; using System; u ...

  3. html,css,js小实例,CSS和JavaScript脚本实例

    CSS和JavaScript脚本实例 导语:CSS样式和JavaScript脚本是应该放在外部文件中呢?还是把它们放在页面本身之内呢?以下的是百分网小编为大家搜集的CSS样式和JavaScript脚本 ...

  4. 超多树形结构的JavaScript菜单实例

    超多树形结构的JavaScript菜单实例,树控菜单,有大家常用的展开折叠型,也就是节点树:还有的是多级的菜单,类似树型,右键菜单树,还有的是悬浮层树,都比较不错,希望大家喜欢. http://www ...

  5. java 代码压缩javascript_通过Java压缩JavaScript代码实例分享

    通过移除空行和注释来压缩 javascript 代码 /** * this file is part of the echo web application framework (hereinafte ...

  6. JavaScript --函数 (实例结合)

    JavaScript --函数 (实例结合) 文章目录 JavaScript --函数 (实例结合) 1.初识函数 2.参数设置 3.函数的调用 [案例]字符串大小写转换 4.变量的作用域 5.匿名函 ...

  7. JavaScript 常用实例

    阅读目录 阐述 JavaScript 常用实例 字符串操作 去除字符串空格 字母大小写切换 字符串循环复制 字符串替换 替换 * 检测字符串 检测密码强度 随机码(toString详解) 查找字符串次 ...

  8. 简单计算器——JavaScript小实例

    简单计算器--JavaScript小实例 先来看一下下我们要做的计算器(以iQOO neo5手机计算器为例): 这就是我们今天要做的计算器的模板,成品的样子会略有不同,但功能完善. 好,当我们看到这个 ...

  9. JavaScript构造函数, 实例和静态成员

    JavaScript构造函数, 实例和静态成员 构造函数 实例成员 静态成员 内置构造函数 引用类型 Object Array 包装类型 String Number 构造函数 构造函数是专门用于创建对 ...

最新文章

  1. 计算机php外文翻译,php外文翻译.doc
  2. golang LMDB入门例子——key range查询
  3. 开关电源反馈环路设计matlab,开关电源控制环路设计(初级篇).pdf
  4. CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)
  5. 一次SSH爆破攻击haiduc工具的应急响应
  6. ng build command not found(ng命令到底是什么鬼)
  7. mysql备份更换存储引擎_mysql数据库innodb存储引擎备份脚本
  8. 2018-12-25 上机作业
  9. VUE3(template使用)
  10. 数据库工作笔记017---还记得Oracle悲观锁和乐观锁嘛?以及hibernate对乐观悲观锁的封装
  11. 百度云部署SSL证书
  12. 消息队列实现socket 消息同步_消息队列二三事
  13. SPSS个案处理插件v1.0 用SPSS构造Bootstrap样本
  14. 教育机构计算机机房制度,现代教育与信息技术中心机房管理制度
  15. Vs2010创建网站
  16. 用计算机算锐角三角比,锐角三角比中计算器使用方法ppt
  17. php抓取新浪数据,新浪新闻详情页的数据抓取实例
  18. 流利阅读12.31 The science of giving gifts your loved ones won’t want to return
  19. JAVA音程_下列选项中哪个音程是减三和弦?
  20. 如何在vscode中优雅的编写C语言

热门文章

  1. 简单团队-爬取豆瓣电影T250-项目进度
  2. 深入理解javascript
  3. Android核心分析之二十七Android GDI 之SurfaceFlinger之动态结构示
  4. sharepoint配置问题解决方案
  5. Ascamp;Chr Converter v1.0.vbs
  6. CompareAndSwap原子操作原理
  7. 自定义注解与validation结合使用案例
  8. C# socket nat 映射 网络 代理 转发
  9. Python 模块 timedatetime
  10. JNI通过线程c回调java层的函数