作为学习node.js的一部分,我刚刚用node.js和socket.io创建了一个非常基本的聊天服务器。服务器基本上将访问chat.html wep页面的所有人添加到实时聊天中,一切似乎都在运行!
现在,我想让一个C#桌面应用程序参与聊天(不使用Web浏览器控件:))。
最好的方法是什么?
答案 0 :(得分:4)
我在nodejs中创建了一个套接字服务器,并使用TcpClient连接到它。
using (var client = new TcpClient())
{
client.Connect(serverIp, port));
using (var w = new StreamWriter(client.GetStream()))
w.Write("Here comes the message");
}
答案 1 :(得分:1)
尝试使用HttpWebRequest课程。它非常易于使用,并且对System.Web或任何特定Web浏览器等内容没有任何依赖性。我用它来模拟浏览器请求并分析测试应用程序中的响应。它足够灵活,允许您设置自己的每个请求标头(如果您正在使用restful服务,或其他一些具有特定标头期望的服务)。此外,它默认会遵循重定向,但这种行为很容易关闭。
创建新请求很简单:
HttpWebRequest my_request = (HttpWebRequest)WebRequest.Create("http://some.url/and/resource");
提交请求:
HttpWebResponse my_response = my_request.GetResponse();
现在,您可以确保获得正确的状态代码,查看响应标头,并且您可以通过流对象访问响应正文。为了执行诸如向请求添加发布数据(如HTML表单数据)之类的操作,您只需将UTF8编码的字符串写入请求对象的流中。
这个库应该很容易包含在任何WinForms或WPF应用程序中。 MSDN上的文档相当不错。
但是,如果响应不在200-402范围内,HttpWebRequest会抛出一个必须捕获的异常。幸运的是,您仍然可以访问响应对象,但是您必须将其作为异常处理(特别是因为异常位于服务器端而不是客户端代码中),这有点令人讨厌。