4

我在客户端和服务器上都使用 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”的末尾需要一个通道有关。但是,将其留空或仅使用“/”会产生错误。

4

0 回答 0