博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【websocket-sharp】使用
阅读量:6245 次
发布时间:2019-06-22

本文共 2219 字,大约阅读时间需要 7 分钟。

一 介绍

WebSocket# 提供了实现WebSocket协议客户端和服务器。

WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端

二 用法

 创建一个控制台程序,从Nuget添加引用websocket-sharp

 

public static void Main (string[] args)  {    var wssv=new WebSocketServer(null, 2018);//创建一个websocket服务对象,2018是端口号    wssv.start();//开始接收websocket    Console.ReadKey (true);    wssv.Stop ();//关闭  }

如果需要使用wss(比如微信小程序中,只接受wss不接受ws,)

则在创建websocket服务对象的第三个参数中加入如下代码

var ssl = new ServerSslConfiguration(new X509Certificate2  (@"D:证书\132456.pfx", "123456"), false,  System.Security.Authentication.SslProtocols.Tls11);  var wssv = new WebSocketServer(null, 2018 , ssl);

 

接着创建一个类继承WebSocketBehavior

public class ChatRoom : WebSocketBehavior    {        protected override async Task OnMessage(MessageEventArgs e)        {                 //传来的消息                var memid = Context.GetQueryString().Result["memid"];//通过此方法可以获取传来的查询字符串值                 memberEntity = new tb_memberEntity();//会员实体类,此处会意即可,不贴具体代码                if (!memid.IsEmpty())                {                    memberEntity = new tb_memberBLL().GetEntity(memid);                }                else                {                    memberEntity.nickname = "游客";                }                StreamReader reader = new StreamReader(e.Data, Encoding.UTF8);//读取发来的数据内容                var msgStr = reader.ReadToEnd();                    await Sessions.Broadcast(new                    {                        content = msgStr,                        name = memberEntity.nickname,                    }.ToJson());  //将准备好的内容发送给“收听”的客户端        }        protected override async Task OnClose(CloseEventArgs e)        {             //处理关闭连接的响应        }        protected override async Task OnOpen()        {             //处理打开连接的响应        }        protected override async Task OnError(WebSocketSharp.ErrorEventArgs e)        {              //处理异常事件            Console.WriteLine(e.Message + "\t\r" + DateTime.Now);        }}

回到刚刚的mian方法中,在wssv.Start();后插入如下代码,相当于创建了一个聊天间

wssv.AddWebSocketService<ChatRoom >("roomName");

写完收工,接着F5运行一下

三 测试

此处我通过html来实现客户端

1  2  3  4     
5 6 7 8
9
10 11 发送12 13 14 15 16 61

 

转载于:https://www.cnblogs.com/ysls/p/9779523.html

你可能感兴趣的文章
80端口被NT kernel & System 占用pid 4
查看>>
mat工具MemoryAnalyzer进行分析java内存溢出hprof文件
查看>>
完整性约束
查看>>
Django之restframework
查看>>
P3924 康娜的线段树
查看>>
Vue的安装和语法
查看>>
验证表单必须为数字并且只保留小数点后2位
查看>>
2-sat基础题 uvalive 3211
查看>>
Elasticsearch5.2.0部署过程的坑
查看>>
go build 不同系统下的可执行文件
查看>>
浏览器版本信息判断整理
查看>>
【我的Android进阶之旅】解决Android Studio 运行gradle命令时报错: 错误: 编码GBK的不可映射字符...
查看>>
windows 下解决 Time_Wait 和 CLOSE_WAIT 方法
查看>>
SOUI Editor使用教程
查看>>
PHP字符串的替换(preg_replace)
查看>>
责任链模式的具体应用
查看>>
Nginx安装
查看>>
Aix下查看内存命令
查看>>
[Android]JsonObject解析
查看>>
最好用的软件快速开发平台-全部源码-3800/套
查看>>