- WebSocket 教程
- WebSockets – 主页
- WebSocket 简介
- WebSocket – 概述
- WebSockets - 双工通信
- WebSocket – 功能
- WebSockets – 实施
- WebSocket 角色
- WebSockets – 事件和操作
- WebSockets – 打开连接
- WebSockets – 处理错误
- WebSockets - 发送和接收消息
- WebSockets – 关闭连接
- JavaScript 和 WebSockets API
- WebSocket - 服务器工作
- WebSocket-API
- WebSockets – JavaScript 应用程序
- WebSocket 实现
- 与服务器通信
- WebSockets – 安全
- WebSockets – 移动应用程序
- WebSocket 有用资源
- WebSockets – 快速指南
- WebSockets – 有用的资源
- WebSockets – 讨论
WebSockets - 服务器工作
Web Socket 服务器是一个简单的程序,它能够处理 Web Socket 事件和操作。它通常向 Web Socket 客户端 API 公开类似的方法,并且大多数编程语言都提供实现。下图说明了 Web Socket 服务器和 Web Socket 客户端之间的通信过程,重点介绍了触发的事件和操作。
下图显示了 Web Socket 服务器和客户端事件触发 -
连接到网络服务器
Web Socket 服务器的工作方式与 Web Socket 客户端类似。它响应事件并在必要时执行操作。无论使用哪种编程语言,每个 Web Socket 服务器都会执行一些特定的操作。
它被初始化为 Web Socket 地址。它处理OnOpen、OnClose和OnMessage事件,并向客户端发送消息。
创建 Web Socket 服务器实例
每个 Web Socket 服务器都需要有效的主机和端口。在服务器中创建 Web Socket 实例的示例如下 -
var server = new WebSocketServer("ws://localhost:8181");
任何有效的 URL 都可以与之前未使用过的端口规范一起使用。保留已连接客户端的记录非常有用,因为它提供了不同数据的详细信息或向每个客户端发送不同的消息。
Fleck 表示具有IwebSocketConnection接口的传入连接(客户端)。每当有人连接或断开我们的服务时,就可以创建或更新空列表。
var clients = new List<IWebSocketConnection>();
之后,我们可以调用Start方法并等待客户端连接。启动后,服务器能够接受传入连接。在 Fleck 中,Start 方法需要一个参数,该参数指示引发事件的套接字 -
server.Start(socket) => { });
打开事件
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事件。在这个事件处理程序中,传入的消息可以传输到客户端,或者可能只选择其中的一些。
过程很简单。请注意,此处理程序采用名为message 的字符串作为参数 -
socket.OnMessage = () ⇒ { // Display the message on the console. Console.WriteLine(message); };
发送()方法
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); } };