📜  WebSockets-服务器工作

📅  最后修改于: 2020-10-17 05:55:56             🧑  作者: Mango


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

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

服务器客户端

连接到Web服务器

Web Socket服务器的工作方式与Web Socket客户端相似。它响应事件并在必要时执行操作。无论使用哪种编程语言,每个Web Socket服务器都将执行某些特定操作。

它被初始化为Web套接字地址。它处理的OnOpen,OnClose和的onMessage事件,太将消息发送到客户端。

创建Web套接字服务器实例

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

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

任何有效的URL均可与端口规范一起使用,而先前并未使用。记录连接的客户端非常有用,因为它提供了包含不同数据的详细信息或向每个客户端发送不同的消息。

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

var clients = new List();

之后,我们可以调用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事件。客户端将从列表中删除,并通知其他客户端有关断开连接的信息。

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);
   }
};