文章详情页
java - IM即时通信服务器原理
浏览:147日期:2024-01-29 14:39:35
问题描述
点对点 的 可以直接使用socket进行通信
但是一般的工程实现 都需要服务器进行转发
那么我想请问 服务器管理那么多连接
它是如何做到 可以将消息发送给想发送的人的
除了openfire还有什么 开源实现
问题解答
回答1:node.js + socket.io websocket
之前做的是用node.js + socket.io 把连接的信息放到一个json中. 用 key来标识 是哪个用户的. 然后发送的 消息 里会持有 这个key 服务端再通过 key 转发给 对应 的客户端.只知道 web这些 其它 的不是很清楚
回答2:就拿简单的QQ比较,QQ用户启动客户端登陆以后,实际就是用户告知服务端我已经上线,那么这时候客户端就处理服务器的监听状态,所谓一对一发消息,就是用户A发个消息出去,然后消息内容里面肯定包含了,内容、接收者B,服务器监听到这个消息,然后根据接收者B获取clientSocket-B将A的消息转发给B,大致如此
标签:
java
上一条:java - mybatis的注解sql怎么设置返回类型和查询参数,比如我要返回一个封装好的类里面有map属性的下一条:java - log4j2 在servlet3.1下报错NoClassDefFoundError
相关文章:
1. python - 求一个在def中可以实现调用本def满足特定条件continue效果的方法(标题说不太清楚,请见题内描述)2. $fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题3. mysql - 我的myeclipse一直连显示数据库连接失败,不知道为什么4. MySQL中的enum类型有什么优点?5. MySQL能否给某个字段的值设置有效期?6. mysql多表联合查询优化的问题7. node.js - 我想让最后进入数据库的数据,在前台最先展示,如何做到?8. MYSQL新建用户设置可以远程访问的问题9. linux - 为什么我在mysql的my.cnf下找不到bind-address?10. 数据库设计 - MySQL数据库主键问题
排行榜
![$fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题](http://www.haobala.com/attached/image/news/202205/093622cb60.png)