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 响应的主要内容,如果未能解决你的问题,请参考以下文章
Websockets:从NodeJS websocket服务器到带有WebSocketSharp的C#客户端的多个响应
HTML5 / PHP WebSocket 连接失败:WebSocket 握手期间出错:意外响应代码:200
ActionCable Rails 5 (Passenger) - 失败:WebSocket 握手期间出错:意外响应代码:404