HTML 5 -- C# Websocket 响应

Posted

技术标签:

【中文标题】HTML 5 -- C# Websocket 响应【英文标题】:HTML 5 -- C# Websocket response 【发布时间】:2016-04-20 20:40:09 【问题描述】:

我正在创建一个套接字应用程序,它能够从网页中的 websocket 接收字符串。我已经能够成功地将 Websocket 连接到我的 C# 程序,但是当网页向程序发送字符串时,它似乎以某种方式被加密或散列。

例如,如果网页发送“Test”,程序会输出“???9uu?\”。我显然在这里错过了一步,我不确定我应该寻找什么来解决这个问题。我猜字符串必须被解密或通过带有 TCP 密钥的特定函数才能获得实际的字符串?

下面的代码是负责从 html 接收字符串的部分,(“Data”和“MyWriter”都输出相同的字符串):

while (true)    
 
    CollectedBytes = new byte[128];
    stream.Read(CollectedBytes, 0, CollectedBytes.Length);
    string Data = Encoding.ASCII.GetString(CollectedBytes, 0, CollectedBytes.Length);

    Output.Speak("Message: " + Data);

    StringWriter MyWriter = new StringWriter();
    HttpUtility.HtmlDecode(Data, MyWriter);

    Output.Speak("Message: " + MyWriter.ToString());

    // The word "Test" should output here
    // But instead "???9uu?\" is.

我假设我错过了一个简单的步骤,但我到处寻找,似乎找不到任何可以帮助我的东西!如果有人可以指导我应该做什么,那就太好了:)

提前致谢。

【问题讨论】:

也许您的数据编码不是 ASCII。你试过 UTF8 还是 UTF16? 我现在就试一试,我相信我尝试过 UTF8,但没有尝试过 UTF16。我会报告的 我只是尝试将数据的编码更改为每种可用的类型,它们都像我以前一样输出一种加密或编码的文本......我真的觉得我每一次都错过了一些东西很简单,我只是不知道要搜索什么来解决这个问题。 【参考方案1】:

您是否尝试在不使用任何 WebSocket 库的情况下手动解码数据?如果是这样,您必须知道来自客户端的 WebSocket 帧的有效负载部分被屏蔽。见RFC 6455, 5.3. Client-to-Server Masking。

【讨论】:

以上是关于HTML 5 -- C# Websocket 响应的主要内容,如果未能解决你的问题,请参考以下文章

C# WebSocket - 握手期间客户端没有响应

Websockets:从NodeJS websocket服务器到带有WebSocketSharp的C#客户端的多个响应

HTML5 / PHP WebSocket 连接失败:WebSocket 握手期间出错:意外响应代码:200

ActionCable Rails 5 (Passenger) - 失败:WebSocket 握手期间出错:意外响应代码:404

C# WebSocket 服务端示例代码 + HTML5客户端示例代码

C# websocket与html js实现文件发送与接收处理