如何在Play 2服务器和C#应用程序之间建立套接字连接?

时间:2014-07-25 11:00:46

标签: java c# sockets playframework

我必须在使用Play框架2用Java编写的服务器和用C#编写的客户端桌面应用程序之间建立连接。系统的本质是应该将大量消息从服务器推送到客户端,因此使用套接字似乎是一种自然的方法,特别是因为Play支持它们(即WebSockets)。

然而,C#对WebSockets的支持是缺乏的。我设法使用System.Net.WebSockets.ClientWebSocket类连接到我的服务器,但是这个类非常低级,使用类型ArraySegment<byte>的缓冲区与WebSockets的js实现无关,我可以在那里只是收到一串可变长度。如果我找不到更好的解决方案,这个课程对我来说似乎是最后的选择。

还有Alchemy 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之上构建的库还没有找到?

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

1 个答案:

答案 0 :(得分:0)

事实证明,在第一个websocket4net库中被忽略的方法效果很好且易于使用,因此使用该库可以解答我的问题。