代码之家  ›  专栏  ›  技术社区  ›  DerStarkeBaer

WebSockets尖锐例外:WebSocketException[关闭]

  •  7
  • DerStarkeBaer  · 技术社区  · 7 年前

    我制作了一个xamarin iOS/Android应用程序。 此应用使用 websockets-sharp 用于与服务器通信。

    现在连接后,我出现以下错误:

    03-29 16:11:14.999 I/mono-stdout(19865): 29.03.2018 16:11:14|Fatal|<>c__DisplayClass17.<startReceiving>b__16|WebSocketSharp.WebSocketException: The header of a frame cannot be read from the stream.
    29.03.2018 16:11:14|Fatal|<>c__DisplayClass17.<startReceiving>b__16|WebSocketSharp.WebSocketException: The header of a frame cannot be read from the stream.
    03-29 16:11:15.005 I/mono-stdout(19865):                             at WebSocketSharp.WebSocketFrame.processHeader (System.Byte[] header) [0x00017] in <38d3cef14c5a4fc9a92de0991034bc1a>:0 
                                at WebSocketSharp.WebSocketFrame.processHeader (System.Byte[] header) [0x00017] in <38d3cef14c5a4fc9a92de0991034bc1a>:0 
                                at WebSocketSharp.WebSocketFrame+<>c__DisplayClassa.<readHeaderAsync>b__9 (System.Byte[] bytes) [0x00000] in <38d3cef14c5a4fc9a92de0991034bc1a>:0 
                                at WebSocketSharp.Ext+<>c__DisplayClass9.<ReadBytesAsync>b__8 (System.IAsyncResult ar) [0x000a2] in <38d3cef14c5a4fc9a92de0991034bc1a>:0 
    03-29 16:11:15.005 I/mono-stdout(19865):                             at WebSocketSharp.WebSocketFrame+<>c__DisplayClassa.<readHeaderAsync>b__9 (System.Byte[] bytes) [0x00000] in <38d3cef14c5a4fc9a92de0991034bc1a>:0 
    03-29 16:11:15.006 I/mono-stdout(19865):                             at WebSocketSharp.Ext+<>c__DisplayClass9.<ReadBytesAsync>b__8 (System.IAsyncResult ar) [0x000a2] in <38d3cef14c5a4fc9a92de0991034bc1a>:0 
    [0:] Socket is disconected...
    

    是否有其他人也犯了这个错误,并且知道如何解决这个问题?

    2 回复  |  直到 4 年前
        1
  •  2
  •   Zain Ul Abidin    7 年前

    导致错误的不是代码,而是您为应用程序编写的算法造成的混乱。 实际误差为 “无法从流中读取帧的标头” 这可能是由以下问题引起的

    您的应用程序和服务器都在以更快的速度同时向彼此发送大量消息或大量数据。定义和解释都很清楚 here

    解决方案

    您必须优化算法,以满足以下约束并消除该错误

    1. 监控与服务器之间的数据传输速率
    2. 尝试等待一侧数据传输完成(半双工)
        2
  •  1
  •   DerStarkeBaer    4 年前

    抱歉,问题出在我的代码中。。。

    如果发送的事件在服务器上不存在,则会发生此错误。 您只能发送存在的事件,否则将失败。