如何在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之上的库,我还没有发现?

或者也许有一些方法使用简单的套接字(不是WebSockets)与Play框架2?我很乐意得到任何帮助。

如何在play2服务器和c#应用程序之间建立套接字连接

事实证明,websocket4net库工作良好,易于使用,所以使用该库是我的问题的答案。