首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails大气漏网

Grails大气漏网
EN

Stack Overflow用户
提问于 2014-02-04 13:05:45
回答 2查看 164关注 0票数 0

我使用样本检查了气氛是如何工作的,并对它做了一些修改:添加一个服务来发送消息:

代码语言:javascript
复制
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在广播中的连接,客户端也没有收到消息。有人知道问题出在哪里吗?谢谢你帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-05 10:32:14

经过一些调试之后,切换到SimpleBroadcaster实现,现在代码工作得很好:

处理程序类

代码语言:javascript
复制
@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)
    }

服务

代码语言:javascript
复制
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)
    }
票数 0
EN

Stack Overflow用户

发布于 2014-02-04 13:34:22

首先,您使用的是什么传输协议?

如果是“长轮询”(默认)或“轮询”气氛,如果没有发送或接收消息(或事件),请在5分钟后重新连接(默认)。

也许其中的一个重连接是字段?

我有一些类似的问题系统,只是重新连接了5次。因此,5x5分钟后,客户机和服务器之间没有连接。检查浏览器日志/已建立的连接,以查看浏览器是否与服务器有有效连接。还可以尝试使用气氛道具 (将超时 conf的值减少到10000,并尝试重现问题)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21553383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档