WebSocket 开源C#版本 使用心得记录

为什么用WebSocket?

项目之前用的Http协议,用Timer轮询请求非常消耗性能,每次查询全量数据,也非常浪费流量;

 

为什么不用C# 自带的WebSocket. 因为需要支持Win7 终端的用户:

DotNet的WebSocket依赖于底层的http.sys。因此需要操作系统Win8或以上的支持 。

如果你要在Win7等系统上用,则要自己用Socket做,或者用第三方的类库。

步骤如下:

a). 构造

构造一个WebSocket需要以下几步。

第1步:

需要声明命名空间

using WebSocketSharp;

第2步: 

使用构造函数创建一个WebSocket实例,在参数中填入需要连接Web服务器的host。

var ws = new WebSocket ("ws://example.com")

当然,因为WebSocket实现了System.IDisposable接口,所以可以使用using语义:

using (var ws = new WebSocket ("ws://example.com")) {
 
...
}

当程序执行完using代码块后,WebSocket会自动关闭,并返回状态码1001(离开状态)。

b). 事件注册

接下来就是注册事件了,WebSocket提供了四个事件注册,即:开启(OnOpen),消息达到(OnMessage),出错(OnError),关闭(OnClose)。

WebSocket与web服务器连接完成之后,就会触发OnOpen事件。注册OnOpen事件如下:

ws.OnOpen += (sender, e) => {
    ...
  };

消息到达的事件如下:

ws.OnMessage += (sender, e) => {
   
...
  };

  • 1
  • 2
  • 3

可以通过e.Data(返回string的text消息数据)或e.RawData得到(返回byte[]的二进制消息数据)。

WebSocket出错了,将会触发OnError事件:

ws.OnError += (sender, e) => {
   
...
  };

可以通过e.Message获得错误信息。

WebSocket关闭时,会触发OnClose事件:

ws.OnClose += (sender, e) => {
    ...
  };

如果想要获取WebSocket退出的原因,可以通过e.Codeunsigned short 状态码)或是e.Reason(string text类型原因)获得。

 

 

c). 连接,发送数据及关闭

在新建一个webSocket实例,并注册一系列事件后,可以使用

ws.Connect ();

同步连接Web服务器。也可以通过

ws.ConnectAsync ()

进行异步连接。

在建立连接之后,可以通过

ws.Send()

发送数据。

当想要断开WebSocket时候,可以使用

WebSocket.Close (ushort code, string reason);

并可以传入状态码或原因。

 

----这个不能截图。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值