工作 / 5 / 35 / 创建于 2年前
那位小伙伴有hyperf项目开发经验,能实现私聊与群聊并能实现分布式部署服务,有偿解决问题。
有其他现成的可以尝试下 ,没必要纠结哪个语言和框架
hyperf github有现成的吧 私聊群聊这个还好 分布式要自己处理 不过也还好,最简单的方式直接用workman GatewayWorker
私聊 群聊 处理好fd 与 用户id 的绑定关系
github.com/pim-cloud/pim-service 这个可以直接用
gatewayworker会简单点 服务搭起来就行 可以配合任何框架
我是用 swoole 写了个,实现了私聊,群聊,多客户端,掉线,重连的功能, 主要是 id 绑定关系搞好就行
代码里夹杂了很多业务逻辑,很难剥离出来给你。思路就是:fd绑定id。举个例子
要详细说呢有点麻烦,我这个是通过 redis 来记录 id 跟 fd 的关系的。总体上讲就是记录好两者的关系,就能通过其中之一找到关联的所有数据, * 这一点参考上面例子3的说明就可以,其它的功能都差不多 *然后实现增删改查。本质上讲,就是 增删改查
增删改查
github.com/Hyperf-Glory/socket-io 你看看这个呢
可以试试我这个包:composer require netsvr-business,websocket的服务端由go实现,维持2万连接没问题,如果要测试服务端的连接承载能力,请务必在Linux环境下跑,因为Linux下的go服务端是用nbio实现的websocket包,用少量的协程承载大量的连接;websocket的业务代码由php实现。下面是我对这套go+php架构的自测的截图:
go+php
截图中的,左上1、2两个框是分别向两台go的websocket服务器发起各500个连接。左上3框是php的业务代码进程的监控,可以看到每个进程的内存占用不到70MB。左下1框是我启动的php业务代码进程。左下2、3两个框是分别向两台go的websocket服务器发起各10个连接,每个连接间隔5秒发出一个1kb的消息。php端收到消息后会向两台go的websocket服务器发出广播指令,将消息下发给每个在线的连接。至于楼主要的单聊、群聊,其实就是我这个包里的单播、组播,或者是单播、发布。
ws://127.0.0.1:6060/netsvr
可以参考我这个开源项目,也是基于hyperf开发的IM wiki.linyiyuan.top/#/
我正要做IM,到处找资料,这个帖子就出现在首页了
@xiucai 哈喽,netsvr-business-demo连接的是go的worker服务器地址,默认是127.0.0.1:6061,在线websocke测试工具需要连接go的websocket地址,默认是ws://127.0.0.1:6060/netsvr,老哥再检查一下?或者把配置发出来看看。
127.0.0.1:6061
@梦想星辰大海 按你说的可以在线连接了,不过在线连接如何才能模拟一下群聊?
一两句话讲不清,我更新一下netsvr-business-demo吧,稍等。
我要举报该,理由是:
有其他现成的可以尝试下 ,没必要纠结哪个语言和框架
hyperf github有现成的吧 私聊群聊这个还好 分布式要自己处理 不过也还好,最简单的方式直接用workman GatewayWorker
私聊 群聊 处理好fd 与 用户id 的绑定关系
github.com/pim-cloud/pim-service 这个可以直接用
gatewayworker会简单点 服务搭起来就行 可以配合任何框架
我是用 swoole 写了个,实现了私聊,群聊,多客户端,掉线,重连的功能, 主要是 id 绑定关系搞好就行
github.com/Hyperf-Glory/socket-io 你看看这个呢
可以试试我这个包:composer require netsvr-business,websocket的服务端由go实现,维持2万连接没问题,如果要测试服务端的连接承载能力,请务必在Linux环境下跑,因为Linux下的go服务端是用nbio实现的websocket包,用少量的协程承载大量的连接;websocket的业务代码由php实现。
下面是我对这套
go+php架构的自测的截图:截图中的,左上1、2两个框是分别向两台go的websocket服务器发起各500个连接。左上3框是php的业务代码进程的监控,可以看到每个进程的内存占用不到70MB。
左下1框是我启动的php业务代码进程。左下2、3两个框是分别向两台go的websocket服务器发起各10个连接,每个连接间隔5秒发出一个1kb的消息。
php端收到消息后会向两台go的websocket服务器发出广播指令,将消息下发给每个在线的连接。至于楼主要的单聊、群聊,其实就是我这个包里的单播、组播,或者是单播、发布。
可以参考我这个开源项目,也是基于hyperf开发的IM wiki.linyiyuan.top/#/
我正要做IM,到处找资料,这个帖子就出现在首页了
@xiucai 哈喽,netsvr-business-demo连接的是go的worker服务器地址,默认是
127.0.0.1:6061,在线websocke测试工具需要连接go的websocket地址,默认是ws://127.0.0.1:6060/netsvr,老哥再检查一下?或者把配置发出来看看。@梦想星辰大海 按你说的可以在线连接了,不过在线连接如何才能模拟一下群聊?