我正在使用C#中的一个小项目,我需要创建一个套接字客户端并查看json文件的套接字。
我尝试了一些事情,每次运行项目时都会收到错误:
PM |致命| StackBuilderSink._PrivateProcessMessage | WebSocketSharp.WebSocketExceptio n:读取HTTP请求/响应时发生异常。 ---> System.IO.EndOfStreamException:无法从数据源读取标头。
一些背景知识。为了测试,我使用带有socket.io的node.js来读取Json文件并发送数据。我知道数据格式正确我有一个HTML / java脚本页面,可以查看数据并使用它。
public MainWindow()
{
InitializeComponent();
using (var ws = new WebSocket("ws://127.0.0.1:8889"))
{
ws.OnMessage += (sender, e) =>
json_output.Text = (e.Data);
ws.ConnectAsync();
}
}
答案 0 :(得分:0)
根据您的描述,我假设您通过MyModule-Swift.h
发送普通的json文件。
超文本传输协议(HTTP)期望按照维基百科(HTTP response)中的描述构建响应:
回复消息包含以下内容:
- 包含状态代码和原因消息的状态行(例如,HTTP / 1.1 200 OK,表示客户的请求
成功)。- 响应标头字段(例如,Content-Type:text / html)。
- 空行。
- 可选的邮件正文。
因此,您必须首先发送状态行和响应标头信息,然后是空行。在此之后,您可以将json文件的内容作为邮件正文发送。
我假设还有一个node.js库,可以作为Web服务器使用并处理HTTP内容。
如果要在没有协议的情况下处理普通数据流,则不应使用io.emit
之类的协议特定套接字,而应使用WebSocket
之类的通用套接字。
当然,您必须解决协议应解决的问题,例如何时消息/文件的结尾...
如何使用TcpListener和pitholes来避免应该在stackoverflow或Google博士上提供。