WebSocket服务器工作
Web Socket服务器是一个简单的程序,它能够处理Web Socket事件和操作。它通常向Web Socket客户端API公开类似的方法,并且大多数编程语言提供实现。下图说明了Web Socket服务器和Web Socket客户端之间的通信过程,演示触发的事件和操作。
下图显示了Web Socket服务器和客户端事件触发 -
连接到Web服务器
WebSocket服务器的工作方式与WebSocket客户端类似。它响应事件并在必要时执行操作。无论使用何种编程语言,每个WebSocket服务器都会执行一些特定的操作。
WebSocket服务器初始化为WebSocket地址,它处理OnOpen
,OnClose
和OnMessage
事件,并将消息发送给客户端。
创建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);
}
};