WebSocketServer 类 |
命名空间: HslCommunication.WebSocket
WebSocketServer 类型公开以下成员。
名称 | 说明 | |
---|---|---|
WebSocketServer |
实例化一个默认的对象 Instantiate a default object |
名称 | 说明 | |
---|---|---|
EnableIPv6 |
获取或设置服务器是否支持IPv6的地址协议信息 (继承自 CommunicationTcpServer。)Get or set whether the server supports IPv6 address protocol information | |
IsStarted |
服务器引擎是否启动 (继承自 CommunicationTcpServer。)Whether the server engine is started | |
IsTopicRetain |
获取或设置当前的服务器是否对订阅主题信息缓存,方便订阅客户端立即收到结果,默认开启 Gets or sets whether the current server caches the topic information of the subscription, so that the subscription client can receive the results immediately. It is enabled by default. | |
KeepAlivePeriod |
设置的参数,最小单位为1s,当超过设置的时间间隔必须回复PONG报文,否则服务器认定为掉线。默认120秒 Set the minimum unit of the parameter is 1s. When the set time interval is exceeded, the PONG packet must be returned, otherwise the server considers it to be offline. 120 seconds by default | |
KeepAliveSendInterval |
获取或是设置用于保持连接的心跳时间的发送间隔。默认30秒钟,需要在服务启动之前设置 Gets or sets the sending interval of the heartbeat time used to keep the connection. 30 seconds by default, need to be set before the service starts | |
LogDebugMessage |
记录一些调试日志的委托,将会进行输出调试文本。 (继承自 CommunicationTcpServer。)The delegate that records some debug logs will output debug text. | |
LogNet |
组件的日志工具,支持日志记录,只要实例化后,当前网络的基本信息,就以DEBUG等级进行输出 (继承自 CommunicationTcpServer。)The component's logging tool supports logging. As long as the instantiation of the basic network information, the output will be output at DEBUG | |
OnlineCount |
获取当前的在线的客户端数量 Get the current number of online clients | |
OnlineSessions |
获取当前的在线的客户端信息,可以用于额外的分析或是显示。
| |
Port |
获取或设置服务器的端口号,如果是设置,需要在服务器启动前设置完成,才能生效。 (继承自 CommunicationTcpServer。)Gets or sets the port number of the server. If it is set, it needs to be set before the server starts to take effect. | |
SocketKeepAliveTime |
获取或设置客户端的Socket的心跳时间信息,这个是Socket底层自动实现的心跳包,不基于协议层实现。默认小于0,不开启心跳检测,如果需要开启,设置 60_000 比较合适,单位毫秒 (继承自 CommunicationTcpServer。)Get or set the heartbeat time information of the Socket of the client. This is the heartbeat packet automatically implemented by the bottom layer of the Socket, not based on the protocol layer. The default value is less than 0, and heartbeat detection is not enabled. If you need to enable it, it is more appropriate to set 60_000, in milliseconds. | |
TopicWildcard |
获取或设置是否启用订阅主题通配符的功能,默认为 False Gets or sets whether to enable the function of subscribing to the topic wildcard, the default is False |
名称 | 说明 | |
---|---|---|
AddSessionTopic |
给一个当前的会话信息动态添加订阅的主题 Dynamically add subscribed topics to a current session message | |
Dispose | Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. | |
Dispose(Boolean) |
释放当前的对象
| |
Equals | Determines whether the specified object is equal to the current object. (继承自 Object。) | |
ExtraOnClose |
关闭的时候额外执行的功能代码
(重写 CommunicationTcpServerExtraOnClose.) | |
ExtraOnStart |
服务器启动的时候额外执行的功能代码
(重写 CommunicationTcpServerExtraOnStart.) | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (继承自 Object。) | |
GetHashCode | Serves as the default hash function. (继承自 Object。) | |
GetTrustedClients |
获取受信任的客户端列表 (继承自 CommunicationTcpServer。)Get a list of trusted clients | |
GetType | Gets the Type of the current instance. (继承自 Object。) | |
LogDebugMsg |
记录当前的日志信息
(继承自 CommunicationTcpServer。) | |
MemberwiseClone | Creates a shallow copy of the current Object. (继承自 Object。) | |
PublishAllClientPayload |
向所有的客户端强制发送消息 Force message to all clients | |
PublishAllClientPayloadAsync |
向所有的客户端强制发送消息 Force message to all clients | |
PublishClientPayload(String, String) |
向订阅了topic主题的客户端发送消息 Send messages to clients subscribed to topic | |
PublishClientPayload(String, String, Boolean) |
向订阅了topic主题的客户端发送消息 Send messages to clients subscribed to topic | |
PublishClientPayloadAsync(String, String) |
向订阅了topic主题的客户端发送消息 Send messages to clients subscribed to topic | |
PublishClientPayloadAsync(String, String, Boolean) |
向订阅了topic主题的客户端发送消息 Send messages to clients subscribed to topic | |
RemoveAndCloseSession |
让Websocket客户端正常下线,调用本方法即可自由控制会话客户端强制下线操作。 Let the Websocket client go offline normally. Call this method to freely control the session client to force offline operation. | |
SendClientPayload |
向指定的客户端发送数据 Send data to the specified client | |
ServerClose |
关闭服务器的引擎 (继承自 CommunicationTcpServer。)Shut down the server's engine | |
ServerStart |
指定端口号来启动服务器的引擎 (继承自 CommunicationTcpServer。)Specify the port number to start the server's engine | |
ServerStart(Int32) |
指定端口号来启动服务器的引擎 (继承自 CommunicationTcpServer。)Specify the port number to start the server's engine | |
SetTrustedIpAddress |
设置并启动受信任的客户端登录并读写,如果为null,将关闭对客户端的ip验证 (继承自 CommunicationTcpServer。)Set and start the trusted client login and read and write, if it is null, the client's IP verification will be turned off | |
SocketAcceptExtraCheck |
当客户端的socket登录的时候额外检查的操作,并返回操作的结果信息。 (继承自 CommunicationTcpServer。)The operation is additionally checked when the client's socket logs in, and the result information of the operation is returned. | |
ThreadPoolLogin |
当客户端连接到服务器,并听过额外的检查后,进行回调的方法 (重写 CommunicationTcpServerThreadPoolLogin(PipeTcpNet, IPEndPoint).)Callback method when the client connects to the server and has heard additional checks | |
ToString | Returns a string that represents the current object. (重写 ObjectToString.) | |
UseSSL(X509Certificate) |
使用SSL通信,传递一个证书的对象
(继承自 CommunicationTcpServer。) | |
UseSSL(String, String) |
使用SSL通信,传递一个证书的路径,以及证书的密码
(继承自 CommunicationTcpServer。) |
名称 | 说明 | |
---|---|---|
OnClientApplicationMessageReceive |
websocket的消息收到时触发 Triggered when a websocket message is received | |
OnClientConnected |
Websocket的客户端连接上来时触发 Triggered when a Websocket client connects | |
OnClientDisConnected |
Websocket的客户端下线时触发 Triggered when Websocket client connects |
名称 | 说明 | |
---|---|---|
socketServer |
核心的socket服务器
(继承自 CommunicationTcpServer。) |
名称 | 说明 | |
---|---|---|
ToJsonString |
获取当前对象的JSON格式表示的字符串。 (由 HslExtension 定义。)Gets the string represented by the JSON format of the current object. |
// 定义一个对象 // Define an object public WebSocketServer webSocketServer; public void Start( ) { try { webSocketServer = new WebSocketServer( ); webSocketServer.ServerStart( 1883 ); } catch(Exception ex) { Console.WriteLine( ex.Message ); } }
public WebSocketServer webSocketServer; public void Start( ) { try { webSocketServer = new WebSocketServer( ); webSocketServer.OnClientApplicationMessageReceive += WebSocketServer_OnClientApplicationMessageReceive; // 如果要控制心跳时间,需要在ServerStart方法调用之前 webSocketServer.KeepAliveSendInterval = TimeSpan.FromSeconds( 20 ); // 默认间隔30秒发送客户端一次心跳 webSocketServer.KeepAlivePeriod = TimeSpan.FromSeconds( 100 ); // 如果100秒之内都没有任何的心跳回复,就认为掉线了 webSocketServer.ServerStart( 1883 ); } catch (Exception ex) { Console.WriteLine( ex.Message ); } } private void WebSocketServer_OnClientApplicationMessageReceive( WebSocketSession session, WebSocketMessage message ) { // 当接收到客户端的数据的时候触发,session参数就是会话信息,你可以选择打印数据,或是回发数据 // Triggered when data is received from the client. The session parameter is the session information. You can choose to print the data or send it back. Console.WriteLine( message.ToString( ) ); webSocketServer.SendClientPayload( session, "I hava received your data, thank you" ); }
// 以下的信息会发布到所有的连接的客户端,包括网页端或是桌面程序 // The following information will be published to all connected clients, including web or desktop private void Button1_Click(object sender, EventArgs e ) { webSocketServer.PublishAllClientPayload( "This is sample data, thank you for use hslcommunication" ); }
public WebSocketServer webSocketServer; public void Start( ) { try { webSocketServer = new WebSocketServer( ); webSocketServer.OnClientApplicationMessageReceive += WebSocketServer_OnClientApplicationMessageReceive; webSocketServer.OnClientConnected += ( WebSocketSession session ) => { Console.WriteLine( session.Remote.ToString( ) + " Online" ); }; webSocketServer.ServerStart( 1883 ); } catch (Exception ex) { Console.WriteLine( ex.Message ); } } private void WebSocketServer_OnClientApplicationMessageReceive( WebSocketSession session, WebSocketMessage message ) { // 当接收到客户端的数据的时候触发,session参数就是会话信息,你可以选择打印数据,或是回发数据 // Triggered when data is received from the client. The session parameter is the session information. You can choose to print the data or send it back. Console.WriteLine( message.ToString( ) ); webSocketServer.SendClientPayload( session, "I hava received your data, thank you" ); }
public WebSocketServer webSocketServer; public void Start( ) { try { webSocketServer = new WebSocketServer( ); webSocketServer.OnClientApplicationMessageReceive += WebSocketServer_OnClientApplicationMessageReceive; webSocketServer.ServerStart( 1883 ); } catch (Exception ex) { Console.WriteLine( ex.Message ); } } private void WebSocketServer_OnClientApplicationMessageReceive( WebSocketSession session, WebSocketMessage message ) { // 客户端发过来的数据就是订阅的主题,服务器在收到数据后加入到订阅的数据信息里去,假如订阅的数据已经存在,会自动推送数据 // The data sent by the client is the subject of the subscription. After receiving the data, the server adds it to the subscribed data information. // If the subscribed data already exists, it will automatically push the data. Console.WriteLine( message.ToString( ) ); string topic = Encoding.UTF8.GetString( message.Payload ); if(!string.IsNullOrEmpty( topic )) { webSocketServer.AddSessionTopic( session, topic ); } }
// 以下的信息会发布到所有的连接的客户端,包括网页端或是桌面程序 // The following information will be published to all connected clients, including web or desktop private void Button1_Click( object sender, EventArgs e ) { webSocketServer.PublishClientPayload( "A", "This is sample data, thank you for use hslcommunication" ); }