WebSocketSharp试图打开套接字并读取传入的数据

时间:2017-10-18 17:45:03

标签: c# sockets

我正在使用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();
    }
}

1 个答案:

答案 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博士上提供。