我在我的客户端和服务器上使用Alchemy websockets但遇到了corrupted/dropped messsages的问题。所以我正在尝试另一个服务器端实现。我使用Fleck实现了服务器,当我使用javascript发送消息时,服务器接收所有消息,解决了我之前的问题。
但是,我还需要能够从C#客户端向websocket服务器发送消息。由于Fleck在C#中没有客户端实现,我以为我会坚持使用Alchemy。我保留了客户端代码不变,所以我认为它应该像以前一样连接到服务器,但是,没有收到任何消息(尽管它们是根据调试器发送的)。
这是我的服务器端实现(Fleck):
private void OnStartWebSocketServer()
{
var server = new WebSocketServer("ws://localhost:11005");
server.Start(socket =>
{
socket.OnOpen = () => Console.WriteLine("Open!");
socket.OnClose = () => Console.WriteLine("Close!");
socket.OnMessage = message => OnReceive(message);
});
}
private static void OnReceive(String message)
{
UpdateUserLocation(message);
}
这是我的客户端实现(Alchemy):
class WSclient
{
WebSocketClient aClient;
public WSclient(String host, String port)
{
aClient = new WebSocketClient("ws://" + host + ":" + 11005 + "/chat")
{
OnReceive = OnReceive,
OnSend = OnSend,
OnConnect = OnConnected,
OnConnected = OnConnect,
OnDisconnect = OnDisconnect
};
aClient.Connect();
}
...
public void Send(String data)
{
aClient.Send(data);
}
我认为这可能与Alchemy客户端在连接字符串'/ chat'末尾需要一个频道这一事实有关。但是将其留空,或只是'/'会出错。