使用gateway-worker实现多人分组实时聊天结合第三方tp

author author     2022-09-18     311

关键词:

一、基础知识
1、Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、移动通讯等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件。
2、GatewayWorker基于Workerman开发的一个框架,支持多协议多端口监听,支持分布式多机部署,用于快速开发长连接应用,例如移动通讯、物联网、智能家居、游戏服务端、聊天室等等。
3、gateClient是用来辅助 workerman或者是gateway进行用户分组以及向用户发送信息的组件,同时,能够快速便捷的将原有系统的uid和clientid绑定起来。
官网:http://www.workerman.net/

二、基本理论
1、基本原则
现有mvc框架项目与GatewayWorker独立部署互不干扰
所有的业务逻辑都由网站页面post/get到mvc框架中完成
GatewayWorker不接受客户端发来的数据,即GatewayWorker不处理任何业务逻辑,GatewayWorker仅仅当做一个单向的推送通道
仅当mvc框架需要向浏览器主动推送数据时才在mvc框架中调用Gateway的APIGatewayClient完成推送
2、基本步骤
1、网站页面建立与GatewayWorker的websocket连接
2、GatewayWorker发现有页面发起连接时,将对应连接的client_id发给网站页面
3、网站页面收到client_id后触发一个ajax请求(假设是bind.php)将client_id发到mvc后端
4、mvc后端bind.php收到client_id后利用GatewayClient调用Gateway::bindUid($client_id, $uid)将client_id与当前uid(用户id或者客户端唯一标识)绑定。如果有群组、群发功能,也可以利用Gateway::joinGroup($client_id, $group_id)将client_id加入到对应分组(重点 有了这个以后后面才能发消息之类的)
5、页面发起的所有请求都直接post/get到mvc框架统一处理,包括发送消息(发消息自己自定义格式)
6、mvc框架处理业务过程中需要向某个uid或者某个群组发送数据时,直接调用GatewayClient的接口Gateway::sendToUid Gateway::sendToGroup 等发送即可

三、搭建gateway
1、下载gateway
http://www.workerman.net/download
2、配置events文件
在页面发起连接时候,将对应连接的clent_id发给网站页面。我们在此文件加上函数

技术分享

四、服务端的配置

1、绑定client_id 并加入分组
技术分享
在此方法中我们一定要把收到的client_id加入分组中,这里简单点前台页面直接设置room_id为1。
2、收发消息
技术分享

技术分享
之后我们就可以在这个方法里面 进行我们的一些业务逻辑 接入我们的项目

3、前端页面稍微修改下
技术分享

技术分享



























vue实现web端多人语音视频聊天(代码片段)

1多人语音聊天功能介绍本文展示了如何使用ZEGOExpressSDK构造多人音视频通话场景,即实现多对多实时音视频聊天互动。用户可在房间内与其余用户进行实时音视频通话,互相推拉流。该场景可用于多人实时音视频聊天、... 查看详情

项目基于trtc的实时多人会议实现(代码片段)

...成技术选型之后,我们需要了解该技术是如何实现和使用的。这一部分参考腾讯云对于TRTC的官方文档说明可以得知:实时音视频新手指引-文档中心-腾讯云-腾讯云(tencent.com)二、TRTC的实现TRTC在使用的时候,主要是作... 查看详情

具有不同角色的实时多人 Google Play 游戏

...题描述】:我正在objective-c中创建一个游戏应用程序,它使用GooglePlayGameservices实现realtimeMultiplayer功能。在应用程序中,用户必须在开始游戏之前下注一些硬币, 查看详情

如何才能实现多人在线编辑excel?

...关于如何才能实现多人在线编辑EXCEL,我们推荐您可考虑使用「金山文档的-在线协作编辑」,可实现多人同时编辑,并实时保存同步更新,例:AB同事同时编辑一个表格,双方可实时看到对方正在编辑哪一个单元格,并实时同步... 查看详情

如何在使用 Google Play 游戏服务的实时多人游戏中使用机器人玩家?

】如何在使用GooglePlay游戏服务的实时多人游戏中使用机器人玩家?【英文标题】:HowcanIusebotplayersinreal-timemultiplayergamesusingGooglePlaygameservices?【发布时间】:2014-01-1122:36:45【问题描述】:我正在为Android设备开发一款新的多人游戏... 查看详情

如何同步播放服务实时多人游戏

...player【发布时间】:2017-09-1914:15:36【问题描述】:我正在使用Libgdx开发流行游戏Pong的在线版本。我已经开始使用Google的RealtimeMultiplayer服务在玩家之间发送游戏数据,但我不知道如何解决我面临的同步问题。此时发送的信息是玩... 查看详情

怎么多人在线编辑excel表格?

...呀,还可以指定用户编辑/查看权限。 参考技术B微信中使用腾讯文档文档小程序,可以创建需要类型的文档或表格 参考技术C你可以创建在线文档 参考技术D如何才能实现多人在线编辑EXCEL?敬业签就可以帮忙,因为:1、你可以... 查看详情

Google Play 服务实时多人房间创建不起作用

...'twork【发布时间】:2019-01-2512:12:32【问题描述】:我正在使用Unity创建一个Android多人游戏,它使用googleplay服务。当我尝试创建一个房间时:publicvoidSingInAndStartMPGame()if(!PlayG 查看详情

Android 实时多人游戏通知连接丢失

...onlost【发布时间】:2016-08-1912:20:25【问题描述】:我正在使用RealTimeMultiplayer从这里创建一个Android游戏:https://developers.google.com/games/services/android/realtimeMultiplayer如果 查看详情

Android 上的 Google 实时多人游戏

...onAndroid【发布时间】:2015-06-1908:55:00【问题描述】:我在使用Google实时多人游戏的应用时遇到问题。当您启动该应用程序时,它会崩溃。我在底部添加了崩溃日志...我发现问题出在我打电话给mGoogleApiClient.connect();时这是我的代码... 查看详情

用cocoscreator和pomelo编写多人在线实时聊天室----基础知识和环境安装

...ithub.com/foupwang/CocosCreatorChatForPomelo.git本教程主要介绍怎么使用CocosCreator和Pomelo实现一个多人在线实时聊天室,Pomelo相关代码基于Pomelo官方提供的Chat范例(https://github.com/NetEase/ 查看详情

Firebase 实时多人游戏

...畅地移动,我需要每帧至少更新一次他们的位置,所以在使用firebase的情况 查看详情

用于实时多人游戏的 Node.js UDP

...ergame【发布时间】:2012-07-0922:22:44【问题描述】:我正在使用node.js构建一个基于浏览器的实时多人游戏。目前,我让客户端通过socket.io将用户输入发送到游戏逻辑服务器,并将游戏世界的快照发送回客户端进行渲染。以下是代... 查看详情

Google Play 服务实时多人游戏的共享种子?

...子(用于初始化“随机”游戏状态时的确定性)。我计划使用Room.getCreationTimestamp, 查看详情

我可以在 Unity Android Free 中使用 Google Play 游戏服务 - 实时多人游戏吗?

】我可以在UnityAndroidFree中使用GooglePlay游戏服务-实时多人游戏吗?【英文标题】:CanIuseGooglePlayGamesServices-RealtimeMultiplayerinUnityAndroidFree?【发布时间】:2014-10-3123:18:35【问题描述】:我有Unity4Free和androidfree,我想使用GooglePlayServices... 查看详情

谷歌玩游戏实时多人游戏如何获得快速匹配玩家的名字?

...【发布时间】:2014-06-0520:23:30【问题描述】:我正在尝试使用googleAPI来制作我的实时多人游戏。我注意到每次玩家使用“随机匹配”选项互相玩时,他们的ID都与他们实际的谷歌ID不同......有没有办法在随机匹配时检索他们 查看详情

WebRTC 是正确的吗? (实时多人游戏)

...务器传输到客户端,反之亦然。在本机应用程序中,我会使用UDP来获取最多的数据(玩家位置,...),因为它比TCP快得多,并且 查看详情

实时多人房间创建进度卡在 20%

...【发布时间】:2014-12-2009:02:44【问题描述】:每当我尝试使用适用于Unity的GooglePlay游戏服务插件创建房间时,进度都会停留在20%。20%是OnRoomSetupProgress(floatpercent)函数中返回的第一个也是唯一的值,它是我的RealTimeM 查看详情