我使用样本检查了气氛是如何工作的,并对它做了一些修改:添加一个服务来发送消息:
def sendMessage(String message){
String mapping = "/jabber/chat/12345"
Broadcaster b = BroadcasterFactory.getDefault().lookup(DefaultBroadcaster.class, mapping)
println("Broadcast resources size:" +b.getAtmosphereResources().size())
def resp = [type: "chat", resource: mapping, message: message] as JSON
b.broadcast(resp)
}但是看起来,当我多次调用这个函数时,我错过了AtmosphereResource在广播中的连接,客户端也没有收到消息。有人知道问题出在哪里吗?谢谢你帮忙。
发布于 2014-02-05 10:32:14
经过一些调试之后,切换到SimpleBroadcaster实现,现在代码工作得很好:
处理程序类
@Override
void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
String mapping = "/jabber/chat" + request.getPathInfo()
Broadcaster b = BroadcasterFactory.getDefault().lookup(SimpleBroadcaster.class, mapping, true)
Meteor m = Meteor.build(request)
m.setBroadcaster(b)
}服务
def sendMessage(String message){
String mapping = "/jabber/chat/12345"
Broadcaster b = BroadcasterFactory.getDefault().lookup(mapping)
println("Broadcast resources size:" +b.getAtmosphereResources().size())
def resp = [type: "chat", resource: mapping, message: message] as JSON
b.broadcast(resp)
}发布于 2014-02-04 13:34:22
首先,您使用的是什么传输协议?
如果是“长轮询”(默认)或“轮询”气氛,如果没有发送或接收消息(或事件),请在5分钟后重新连接(默认)。
也许其中的一个重连接是字段?
我有一些类似的问题系统,只是重新连接了5次。因此,5x5分钟后,客户机和服务器之间没有连接。检查浏览器日志/已建立的连接,以查看浏览器是否与服务器有有效连接。还可以尝试使用气氛道具 (将超时 conf的值减少到10000,并尝试重现问题)。
https://stackoverflow.com/questions/21553383
复制相似问题