如何在play2服务器和c#应用程序之间建立套接字连接
本文关键字:之间 应用程序 建立 套接字 连接 play2 服务器 | 更新日期: 2023-09-27 18:14:41
我必须在使用Play框架2的Java编写的服务器和使用c#编写的客户端桌面应用程序之间建立连接。系统的本质是需要将大量消息从服务器推送到客户端,因此使用套接字似乎是一种自然的方法,特别是因为它们是由Play支持的(即WebSockets)。
然而,c#对WebSockets的支持有点缺乏。我设法使用System.Net.WebSockets.ClientWebSocket
类连接到我的服务器,但这个类是非常低级的,与ArraySegment<byte>
类型的缓冲区一起工作,与WebSockets的js实现相距甚远,在那里我可以接收一个可变长度的字符串。如果我找不到更好的解决办法,这门课似乎是我最后的办法了。
也有炼金术Websockets库,但我只是不能让它工作。我启动我的服务器,检查它是否与http://www.websocket.org/echo.html页面一起工作,然后启动控制台客户端,但它绝对什么也不做,没有响应,服务器没有注意到任何试图连接的东西。下面是我使用的c#代码:
private static void Main()
{
var aClient = new Alchemy.WebSocketClient("ws://localhost:9000/wstest")
{
OnReceive = context => Console.WriteLine("receive"),
OnConnected = context => Console.WriteLine("connect"),
OnSend = context => Console.WriteLine("send"),
OnDisconnect = context => Console.WriteLine("dissend")
};
aClient.Connect();
aClient.Send("HI!");
Console.ReadLine();
}
所以,我的问题是:是否有WebSocket客户端的任何实现或可能建立在ClientWebSocket
之上的库,我还没有发现?
事实证明,websocket4net库工作良好,易于使用,所以使用该库是我的问题的答案。