当前位置: 首页 > 教程 > Websocket >

WebSocket服务器工作

精华
小牛编辑
187浏览
2023-03-14

Web Socket服务器是一个简单的程序,它能够处理Web Socket事件和操作。它通常向Web Socket客户端API公开类似的方法,并且大多数编程语言提供实现。下图说明了Web Socket服务器和Web Socket客户端之间的通信过程,演示触发的事件和操作。

下图显示了Web Socket服务器和客户端事件触发 -

连接到Web服务器

WebSocket服务器的工作方式与WebSocket客户端类似。它响应事件并在必要时执行操作。无论使用何种编程语言,每个WebSocket服务器都会执行一些特定的操作。

WebSocket服务器初始化为WebSocket地址,它处理OnOpenOnCloseOnMessage事件,并将消息发送给客户端。

创建Web套接字服务器实例

每个WebSocket服务器都需要有效的主机和端口。在服务器中创建WebSocket实例的示例如下 -

var server = new WebSocketServer("ws://localhost:8181");

任何有效的URL都可以与端口的规范一起使用,但是端口不被使用过。保留已连接客户端的记录非常有用,因为它提供了不同数据的详细信息或向每个客户端发送不同的消息。

Fleck使用IwebSocketConnection接口表示传入连接(客户端)。每当有人连接或断开服务时,都可以创建或更新空列表。

var clients = new List<IWebSocketConnection>();

之后可以调用Start方法并等待客户端连接。启动后,服务器可以接受传入连接。在Fleck中,Start方法需要一个参数,该参数指示引发事件的套接字 -

server.Start(socket) =>
{
});

onOpen事件

OnOpen事件确定新客户端已请求访问并执行初始握手。应将客户端添加到列表中,并且可能存储与其相关的信息,例如:IP地址。Fleck提供了此类信息以及连接的唯一标识符。

server.Start(socket) ⇒ {

   socket.OnOpen = () ⇒ {
      // Add the incoming connection to our list.
      clients.Add(socket);
   }

   // Handle the other events here...
});

OnClose事件

每当客户端断开连接时,都会引发OnClose事件。客户端将从列表中删除,并通知其他客户端断开连接。

socket.OnClose = () ⇒ {
   // Remove the disconnected client from the list.
   clients.Remove(socket);
};

OnMessage事件

当客户端将数据发送到服务器时,将引发OnMessage事件。在此事件处理程序中,传入的消息可以传输到客户端,或者可能只选择其中一些。

这个过程很简单。请注意,此处理程序将message作为参数 -

socket.OnMessage = () ⇒ {
   // Display the message on the console.
   Console.WriteLine(message);
};

Send()方法

Send()方法只是将所需的消息发送到指定的客户端,使用Send()可以跨客户端存储文本或二进制数据。

OnMessage事件的工作如下 -

socket.OnMessage = () ⇒ {
   foreach (var client in clients) {
      // Send the message to everyone!
      // Also, send the client connection's unique identifier in order
      // to recognize who is who.
      client.Send(client.ConnectionInfo.Id + " says: " + message);
   }
};