先命令行建立WsJoin(加入房间) WsLeave(离开房间) RoomTest(房间发送文件)

客户端代码

<html><head></head><body><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script><!-- 接收者<input type="text" id="fid"> --><!-- 接收者<input type="text" id="fid"> --><button onclick="jaru()">加入房间</button><button onclick="likai()">离开房间</button>发送内容<input type="text" id="content"><button onclick="roomcall()">发送</button><script>ipvar ws = new WebSocket("ws://ip:端口/");ws.onopen = function () {console.log('lianjiezhong')};ws.onclose = function () {console.log("lianjieguanbi")};ws.onmessage = function (evt) {// console.log(evt.data)call_message(evt.data)};//处理回调参数function call_message(data){//处理回调数据console.log(data);var start;var start_arr = data.indexOf('[');var start_json = data.indexOf('{');if(start_arr < 0){start = start_json;}if(start_arr >= 0 && start_json >= 0){start = Math.min(start_arr,start_json);}if(start){var json =  JSON.parse(data.substr(start));if (json instanceof Array){window[json[0]](json[1])}}}
//加入房间function jaru(){var room = prompt("输入加入房间号");ws.send(JSON.stringify(['join',{room:room}]));}
//加入房间回调function joincall(){console.log(message);}
//离开房间事件function likai(){var room = prompt("请输入离开房间号");ws.send(JSON.stringify(['leave',{room:room}]))}//离开房间回调function leavecall(){console.log(message);}//房间消息发送function roomcall(){var room = prompt("请输入发送房间号");var msg = $("#content").val();ws.send(JSON.stringify(['RoomTest',{room:room,msg:msg}]));}</script></body>
</html>

配置文件中增加

加入房间代码

<?php
declare (strict_types = 1);namespace app\listener;class WsJoin
{/*** 事件监听处理** @return mixed*/public function handle($event){$ws = app('think\swoole\Websocket');// 这块要注意是//$ws 引入的是 \vendor\topthink\think-swoole\src\Websocket.php//$room  引入的是 \vendor\topthink\think-swoole\src\websocket\Room.php//这两块的命名空间不一样 Websocket  websocket//一个是大写 一个是小写  room并不是在大写的Websocket下面$room  =  app('think\swoole\websocket\Room');var_dump($room->getClients($event['room']));//加入房间$ws -> join($event['room']);// 指定客户端加入指定Room、//$ws->setSender(2)->join($event['room']);var_dump($room -> getClients($event['room']));$ws->emit('joincall','加入成功');}}

离开房间代码

<?php
declare (strict_types = 1);namespace app\listener;class WsLeave
{/*** 事件监听处理** @return mixed*/public function handle($event){$ws = app('think\swoole\Websocket');$roomobj = app('think\swoole\websocket\Room');var_dump($roomobj->getClients($event['room']));//离开房间$ws->leave($event['room']);var_dump($roomobj->getClients($event['room']));$ws -> emit('leavecall', '离开了房间');}
}

房间消息发送代码

<?php
declare (strict_types = 1);namespace app\listener;class RoomTest
{/*** 事件监听处理** @return mixed*/public function handle($event){$ws   = app('think\swoole\Websocket');//to 也可以是房间名  现在用的就是房间名  $ws -> to($event['room']) -> emit('roomcall', $event['msg']);}
}

thinkphp6 websocket-room的加入房间+离开房间+房间消息发送相关推荐

  1. revit中在三维视图下显示房间文字和“房间集成”

    revit中在三维视图下显示房间文字的"房间集成" 相信大家都会遇见在模型浏览的时候不知道自己所处的空间是什么位置问题,Revit中,如果建筑模型已经创建好"房间&quo ...

  2. PTA练习-- 寻宝,小明有一张藏宝图,上面有m*n个房间,每个房间里面都有一个有一定价值的宝物,小明只能从左上角的房间进入收集宝物...(动态规划)

    寻宝 小明有一张藏宝图,上面有m*n个房间,每个房间里面都有一个有一定价值的宝物,小明只能从左上角的房间进入收集宝物,且每次只能向右边或向下边的房间继续寻宝,最终只能从最右下的房间出来.请你帮小明计算 ...

  3. 未能分析从服务器收到的消息,WebSocket Javascript客户端未收到来自服务器的消息...

    我已经在本地GlassFish 4.1服务器上部署了Java Web应用程序,该服务器实现了与Web客户端互操作的WebSockets.我能够通过套接字成功执行客户端到服务器的通信,但由于某种原因,服 ...

  4. WebSocket使用javax.websocket.RemoteEndpoint.Basic.sendObject(Object arg0)向页面方法发送对象

    WebSocket接口中有一个直接发送对象给页面的方法: voidjavax.websocket.RemoteEndpoint.Basic.sendObject(Object arg0) throws ...

  5. 直播里面用户进入房间离开房间效果

    最终的实现效果: 用户进入房间 public void insertItem(UserBean userBean) {if (userBean == null) {return;}int positi ...

  6. thinkphp6+websocket 群聊实现

    目录 一.安装扩展 二.websocket配置 1.worker_server.php ​编辑 注意事项分享:数据库形式 2.新建控制器Worker(名字随意) 总结 一.安装扩展 cd到项目下进行扩 ...

  7. springboot+websocket+token验证+jedis支持集群部署发消息

    目录 websocket主要代码 pom.xml MyWebSocketHandler WSInterceptor WebSocketConfig Redis订阅广播实现Session共享 pom.x ...

  8. SpringBoot 集成 webSocket,实现后台向客户端推送消息

    图文等内容参考链接 SpringBoot2.0集成WebSocket,实现后台向前端推送信息_Moshow郑锴的博客-CSDN博客_springboot websocket WebSocket 简介 ...

  9. 客户端关闭服务器收到消息推送消息,【网络编程】——WebSocket打开和关闭通道,消息发送...

    HTML5给Web浏览器带来了全双工TCP链接WebSocket标准服务器的能力.浏览器和可以与服务器创建链接,经过已创建的通讯信道来发送和接收数据而不须要由HTTP协议入额外的开销.javascri ...

最新文章

  1. mysql查询为0的值_MySql查询整型字段空字符时出现为0的数据
  2. 16年寒假随笔(4)
  3. ASP.NET 2.0+Atlas编写鼠标拖放程序(2)
  4. 个人学习进度(第十六周)
  5. 环形队列出队的元素怎么输出出来_队列的知识讲解与基本实现(数据结构)
  6. python批量合并csv_如何在Python中通过多个列合并两个CSV文件
  7. [xmind] ASP.NET 设计模式 - UX 用户体验
  8. 极客大学架构师训练营 系统架构 高并发 高可用 垂直伸缩 水平伸缩 第7课 听课总结
  9. 基于springboot的科技馆设备巡检系统
  10. Unity WebView 插件 | 浏览器插件3D WebView 专栏介绍
  11. svm图像分割matlab,python实现
  12. springboot集成微信支付普通商户版之H5支付
  13. 利用Excel批量快速发送电子邮件
  14. 2022年6月青少年软件编程(图形化) 等级考试试卷(一级)
  15. 网络故障排除的五个简单步骤
  16. 透视全球AI治理十大事件:站在创新十字路口,人工智能会失控吗?
  17. 关于如何在Matlab中构造三维几何,以及三棱柱实例演示
  18. 服务器间互传文件,服务器互传文件
  19. 有一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, …编写程序求出这个序列的前n项之和。
  20. linux参数日期加一天,详解Linux系统中的日期设定与date命令的用法

热门文章

  1. 知名人寿保险品牌SCRM成功案例-全员营销方案赋能 提升客户管理能力
  2. C语言/实现MD5加密
  3. hexo网页相册页面的制作
  4. 【视频演示】B站视频演示
  5. 微软 Visual Studio 2019 正式发布
  6. python3编写人工智能_人工智能学习第三章 编写第一个Python程序 及概念
  7. 记录小程序中获取公众号的信息授权实现过程
  8. iPhone开发 获取系统时间 星期 年 月 日 时 分 秒
  9. HTML 入门基础教程
  10. 快速排序(划分函数partition和主元pivot选取)