【问题标题】:Cant receive messages over a certain size with autobahn?无法通过高速公路接收超过一定大小的消息?
【发布时间】:2014-08-06 15:49:21
【问题描述】:

我的 android 应用程序有问题,它使用高速公路从 Websocket 服务器接收消息。服务器使用 libwebsockets。 我能够接收足够“小”的消息。所以这没问题,但是一旦消息大小超过某个值,应用程序就会停止调用onTextMessageReceive() 方法。 在那之后发生了一次,我也无法再收到其他任何东西了。我需要重新启动我的应用才能再次收到消息。

有人知道问题出在哪里吗? 我检查了MaxMessagePayloadSizeMaxFramePayloadSize 的参数,它们的大小远远超过我试图发送到我的应用程序的大小。

【问题讨论】:

  • 您遇到问题的“确定值”是多少? AutobahnAndroid 在大小方面的 2 个位置是:github.com/tavendo/AutobahnAndroid/blob/master/Autobahn/src/de/…github.com/tavendo/AutobahnAndroid/blob/master/Autobahn/src/de/…。这会触发吗?
  • 嘿,很抱歉回答晚了:我发现这个特定的值是 150 字节,任何大于这个值都会导致问题。我还发现了一个奇怪的行为。因为使用来自websocket.org 的 echoTest 示例服务器,它可以正常工作。使用此服务器时,我可以接收超过 150 个字节,但我的 libwebsockets 没有,奇怪的是,如果我使用另一个客户端,我也可以使用 libwebsockets 接收超过 150 个字节。似乎问题在于 libwebsockets 和高速公路的结合。我发现我不知何故陷入了goo.gl/i9UbLU的while循环
  • 我不了解 libwebsocket,但 AutobahnAndroid 可以很好地与各种服务器配合使用 - 并且使用 AutobahnTestsuite 对其进行了协议合规性测试。

标签: android websocket autobahn


【解决方案1】:

好的,我自己找到了答案。 我的错!这不是高速公路客户的错。 我在 libwebsocket 服务器中创建了一个新协议,并且有一个这样的选项集:

{
"new_protocol",     /* name */
callback_ new_protocol,     /* callback */
sizeof(struct per_session_data_new_protocol),
128,            /* max frame size /rx buffer */
},

我现在将其更改为更大的值,现在它工作正常:)

无论如何,谢谢你的努力:)

【讨论】:

    猜你喜欢
    • 2011-06-30
    • 1970-01-01
    • 2015-02-03
    • 2017-06-26
    • 2021-03-20
    • 2023-01-24
    • 2016-02-12
    • 2012-02-28
    • 1970-01-01
    相关资源
    最近更新 更多