IM即时通信服务器原理
点对点 的 可以直接使用socket进行通信
但是一般的工程实现 都需要服务器进行转发
那么我想请问 服务器管理那么多连接
它是如何做到 可以将消息发送给想发送的人的
除了openfire还有什么 开源实现
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
点对点 的 可以直接使用socket进行通信
但是一般的工程实现 都需要服务器进行转发
那么我想请问 服务器管理那么多连接
它是如何做到 可以将消息发送给想发送的人的
除了openfire还有什么 开源实现
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
node.js + socket.io
websocket
之前做的是用node.js + socket.io
把连接的信息放到一个json中. 用 key来标识 是哪个用户的. 然后发送的 消息 里会持有 这个key 服务端再通过 key 转发给 对应 的客户端.
只知道 web这些 其它 的不是很清楚
就拿简单的QQ比较,QQ用户启动客户端登陆以后,实际就是用户告知服务端我已经上线,那么这时候客户端就处理服务器的监听状态,所谓一对一发消息,就是用户A发个消息出去,然后消息内容里面肯定包含了,内容、接收者B,服务器监听到这个消息,然后根据接收者B获取clientSocket-B将A的消息转发给B,大致如此
windows服务器可以看看iocp,Linux的话可以看看epoll。
库的话跨平台的有ACE,libuv,单一Linux平台的有libevent等。
大框架的话就是这些了,细致的优化就是一点点积累了。