Mina 的 IOSESSION 静态的全局变量可以吗?
本项目在其他模块也需要使用mina发送数据给客户端,可是在hander外边不知道怎么触发或者发送。我想在hander中设置一个静态的全局变量供外部获取IOsession 来发送消息(或者通过IOSESSION 获得所有的连接中的客户端,群发消息)。不知道这样线程安全吗?会不会死锁?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您的单机的意思是服务器在一台主机上,集群就是服务器分布在多台计算机上吗? 用这种方法获得所有用户可以吗? // 获取所有正在连接的IoSession Collection<IoSession> sessions = session.getService().getManagedSessions().values();您说的用户标志用用户IP可以吧
是的。分布式情况下,单机是不可能拿到所有用户链接的。所以不要费劲了。需要引入中间件。
回复
请问 mina 怎么跟随tomcat 启动和关闭
单机可以这么做,Map<String, IOSession> 用户标示作为key, 然后可以主动的向某个用户发消息。
集群就不可以了,因为单机不能拿到所有的用户,要引入消息中间件,比如redis的pub/sub机制。