将C#客户端集成到node.js+;socket.io聊天应用程序

将C#客户端集成到node.js+;socket.io聊天应用程序,c#,javascript,node.js,C#,Javascript,Node.js,作为learning node.js的一部分,我刚刚用node.js和socket.io创建了一个非常基本的聊天服务器。服务器基本上会将访问chat.html wep页面的所有人添加到实时聊天中,一切似乎都正常 现在,我想让一个C#桌面应用程序参与聊天(不使用web浏览器控件:) 最好的办法是什么 尝试使用该类。它非常易于使用,并且不依赖于System.Web或任何特定的Web浏览器。我使用它模拟浏览器请求并分析测试应用程序中的响应。它足够灵活,允许您设置自己的每请求头(如果您使用的是restf

作为learning node.js的一部分,我刚刚用node.js和socket.io创建了一个非常基本的聊天服务器。服务器基本上会将访问chat.html wep页面的所有人添加到实时聊天中,一切似乎都正常

现在,我想让一个C#桌面应用程序参与聊天(不使用web浏览器控件:)

最好的办法是什么

尝试使用该类。它非常易于使用,并且不依赖于System.Web或任何特定的Web浏览器。我使用它模拟浏览器请求并分析测试应用程序中的响应。它足够灵活,允许您设置自己的每请求头(如果您使用的是restful服务,或者其他具有特定头预期的服务)。此外,默认情况下,它将跟随重定向,但这种行为很容易关闭

创建新请求很简单:

HttpWebRequest my_request = (HttpWebRequest)WebRequest.Create("http://some.url/and/resource");
提交请求:

HttpWebResponse my_response = my_request.GetResponse();
现在,您可以确保获得了正确的状态代码,查看响应头,并且可以通过流对象访问响应体。为了向请求添加post数据(如HTML表单数据),只需向请求对象的流中写入UTF8编码的字符串

这个库应该很容易包含到任何WinForms或WPF应用程序中。MSDN上的文档非常好


但是有一个问题,如果响应不在200-402范围内,HttpWebRequest会抛出一个您必须捕获的异常。幸运的是,您仍然可以访问响应对象,但您必须将其作为异常处理(特别是因为异常在服务器端而不在客户端代码中),这有点烦人。

我在nodejs中创建了一个套接字服务器,并使用TcpClient连接到它

using (var client = new TcpClient())
{
    client.Connect(serverIp, port));
    using (var w = new StreamWriter(client.GetStream()))
        w.Write("Here comes the message");
}

. 更理想的解决方案是通过socket.io公开TCP套接字,但这听起来是一个正确的做法。Http不像socket.io那样是为双向通信而设计的,要使用它,你应该实现长轮询,如果你在.Net上,只使用TCP套接字更有意义。它可以更完整一点,解释如何发送和获取socket.io消息,但这是最好的答案。