我必须在使用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)? 我很乐意得到任何帮助。