首页 > 其他分享 >WebSocket 服务端-SupperWebSocket

WebSocket 服务端-SupperWebSocket

时间:2023-05-19 16:37:08浏览次数:31  
标签:SupperWebSocket WebSocket WebSocketServer 会话 客户端 服务端 wsServer

通过对Flect Websocket 和 SupperWebSocket 的比较,初步总结出

WebSocket 服务端的实现步骤:

  • 建立WebSocket 服务,并注册事件(Opend OnMessageReceived Closed)
  • 配置 监听地址 Fleck 的WebSocketServer(url) url="ws://0.0.0.0:10020" 而SupperWebSocket.Setup(ip,port)
  • 启动监听 Start()

示例:(SupperWebSocket)

WebSocketServer wsServer=new WebSocketServer();
if(!wsServer.Setup(ip,port)){
  //设置ip与端口失败
}
if(!wsServer.Start())
{
  启动监听失败处理
}
wsServer.NewSessionConnected=(session)=>{有新的连接};
wsServer.NewSessionClosed=(session,reason)=>{有断开连接};
wsServer.NewMessageReceived=(session,message)=>{收到新的消息}
wsServer.NewDataReceived=(session,bytes)=>{二进制消息}
wsServer.Stop()

这里WebSocketServer对象通过SetUp方式对要监听的IP及端口进行了设置,然后使用Start方法启动监听。

Setup方法有4中重载,但是我们通常用到的只有设置ip和端口。
WebSocketServer 还提供了4个事件泳衣管理与客户端的连接、断开和接受消息动作。NewMessageReceived 事件用于处理文本类消息,NewDataReceived 事件用于处理二进制类型的消息。

SupperWebSocket支持以控制台、Winform、IIS以及Windows服务的形式寄宿服务。

WebSocket 既然是双工通信,那么就不能光等着接收来自客户端的消息,我们也需要从服务端向客户端推送消息。

SupperWebSocket 框架中,服务端与客户端创建的连接对象为WebSocketSession类型,也就是说将每一个客户端的实例视为一个会话,在客户端创建连接的时候,产生这个会话,在客户端断开的时候销毁这个会话,而客户端与服务端进行消息通信的时候,也依赖这个会话进行传递。我们要实现服务端向客户端的广播,就要获取到当前在活动的所有会话.

wsServer.GetAllSessions(); //获取所有的会话,已断开的会话不会出现在集合中

在获取到会话之后,我们就可以通过会话向客户端发送消息了

foreach(var item in wsServer.GetAllSessions()){
   item.Send("消息");  //所有与服务端保持连接的会话(客户端)都能接收到本条消息

}

同时会话对象还提供一个SendCloseHandshakeResponse()方法向客户端发送一个强制断开连接的指令。
WebSocketSession 对象包含了服务端和客户端的所有信息,以及WebSocketServer对象本身,我们可以利用它做很多事情。

标签:SupperWebSocket,WebSocket,WebSocketServer,会话,客户端,服务端,wsServer
From: https://www.cnblogs.com/sundh1981/p/17415548.html

相关文章

  • 天翼云CDN全站加速产品对websocket协议的支持
    本文分享自天翼云开发者社区《天翼云CDN全站加速产品对websocket协议的支持》,作者:郭****迎1、背景介绍HTTP协议有一个缺陷:通信只能由客户端发起。这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就只能使用轮询的方案。轮询是在特定的时间间隔(如每1秒),由浏览......
  • 从零玩转Websocket实时通讯服务之前后端分离版本-websocket
    title:从零玩转Websocket实时通讯服务之前后端分离版本date:2021-10-2500:47:12.945updated:2021-12-2617:43:10.496url:https://www.yby6.com/archives/websocketcategories:-OSS-mysql-api-单例模式-websokcettags:前言公司项目需要用到消息提示,那么......
  • ET介绍——为什么使用C# .net core做服务端?
    为什么使用C#.netcore做服务端?游戏服务端从早期的单服到分布式,开发越来越复杂,对稳定性,开发效率要求越来越高。开发语言的选择也逐步发生了变化,C到C++到C+++PYTHON或者C+++LUA到现在很多公司开始使用erlang,go,java,c#。目前是一个百花齐放的局面。但是如果是要你重新......
  • RocketMQ源码(三):服务端NameSrv启动流程
    有关Namesrv的概念及功能,详见RocketMQ(三):架构设计中技术架构组成namesrv,这里不再赘述。RocketMQ中Namesrv启动入口:org.apache.rocketmq.namesrv.NamesrvStartup。Namesrv启动,NamesrvStartup#main0()核心伪代码:1publicstaticNamesrvControllermain0(String[......
  • c#构建具有用户认证与管理的socks5代理服务端
    Socks协议是一种代理(Proxy)协议,例如我们所熟知的Shdowsocks便是Socks协议的一个典型应用程序,Socks协议有多个版本,目前最新的版本为5,其协议标准文档为RFC1928。我们一起来使用.net7构建一个支持用户管理的高性能socks5代理服务端目录协议流程1clie......
  • protoBuf 实现客户端与服务端
    转载请注明出处:1.定义消息格式 在src/main/proto目录下创建person.proto文件,并定义消息格式,例如:syntax="proto3";packageexample;messagePerson{stringname=1;int32age=2;repeatedstringinterests=3;}这个文件定义了一个名为Pers......
  • Websocket
    websocket是什么websocket与http一样都是OSI模型中应用层的协议,都是基于TCP协议来传输数据的,我们把这些更高级的协议理解成对TCP的封装。socket与websocket的关系socket与websocket的关系:就是毫无关系。socket并不是一种协议,而是一个抽象层,将物理层、数据链路层、网络层与传输......
  • Oracle客户端导出服务端数据(数据泵)生成DMP文件并导入
    1.首先了解下EXPDP和EXP的区别   1)EXP和IMP是客户端工具程序,它们既可以在可以客户端使用,也可以在服务端使用。   2)EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLEQ服务端使用,不能在客户端使用   3)IMP只适用于EXP导出文件,不适用于EXPDP导出文件......
  • .NET + SignalR 的反向代理 websocket/http 数据隧道
    开源项目TuToDataTunnel:https://github.com/viordash/TuToDataTunnel,这个项目可以满足以下几个需求:使用一个公网IP地址和一个tcp端口,默认端口为80http。Websocket或http隧道传输、性能或可访问性。理想情况下,将自动选择最佳可用交换协议。同时通过隧道传输多个TCP和u......
  • .Net Core 实现WebSocket Server 的另外三种方式
    回顾之前已经写过关于《WebSocket原生socket实现》和《.NetCoreWebSocket服务端与客户端完整示例》以及《基于.NetTcpListener实现WebSocketServer通讯》。其中除了《.NetCoreWebSocket服务端与客户端完整示例》外,都是基于自己对Websocket协议的实现,这种实现在生产环境......