我在客户端和服务器上都使用 Alchemy websockets,但遇到了消息损坏/丢失的问题。所以我正在尝试另一个服务器端实现。我使用 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);
}
这是我的客户端实现(炼金术):
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”的末尾需要一个通道有关。但是,将其留空或仅使用“/”会产生错误。