博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SuperSocket.WebSocket 摸索记录
阅读量:6232 次
发布时间:2019-06-21

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

hot3.png

官网:www.supersocket.net/

文档:http://docs.supersocket.net/v1-6/zh-CN

从8.1号开始尝试用它,昨天只试了文档中的Telnet的示例,挺顺利的。但我要做WebSocket呀,怎么办呢,整个文件都不提WebSocket ,我也没有找到怎么设定appServer为WebSocket类型呀!晚上翻手机,发现官网上:

SuperWebSocket 是一个基于SuperSocket开发的,兼容Mono的 WebSocket服务器; 

去GitHub上看到这句:SuperWebSocket is being merged into  as an additional module .WebSocket. You can useSuperSocket.WebSocket in the same way with SuperWebSocket but with a different namespace.

原来WebSocket已经做成一个组件了,插入到SuperSocket空间下面。 然后用法 不变,只是命名空间要增加一个SuperSocket ,同时它没有自己的官网 ,也没有自己的文档,有点坑!

废话不说了,转入正题

下面是通过vs2015的NuGet需要引入的。

我反复折腾了好久,其实最简单是先安装SuperSocket.WebSocket这个包就行,然后它会引用其它2个。再安装SuperSocket.Engine包,没有这个还会报错。不知道为什么作者不直接给SuperSocket.WebSocket包增加上Engine的依赖。

经过摸索和参考GitHub上的Sample目录,能启动一个服务器了。就直接贴代码了:

//MyWS.CSclass MyWS    {        WebSocketServer wsApp;        public void Start()        {            wsApp = new WebSocketServer();            wsApp.NewSessionConnected += WsApp_NewSessionConnected;//下面是通过事件响应信息的代码,如果想用命令的话,要注释掉事件,增加上命令相关的类!//wsApp.NewMessageReceived +=new SessionHandler
( WsApp_NewMessageReceived); //private void WsApp_NewMessageReceived(WebSocketSession session, string value) //{ // session.Send("you just send msg=" + value.ToString()); //} if (!wsApp.Setup(20000)) { Console.WriteLine("未能Set up ws"); } if (!wsApp.Start()) //Setup with listening port { Console.WriteLine("未能启动ws"); } } public void Stop() { if (wsApp.State == SuperSocket.SocketBase.ServerState.Running) wsApp.Stop(); } private void WsApp_NewSessionConnected(WebSocketSession session) { session.Send("you are connected!" + session.ToString()); } }
//Program.cs class Program    {        static void Main(string[] args)        {            MyWS ws = new MyWS();            ws.Start();            while (Console.ReadKey().KeyChar != 'q')            {                Console.WriteLine("........");                continue;            }            ws.Stop();        }           }

以上代码就能运行了。只是不响应任何消息。下面是增加命令的方法:

//在项目命名空间中,随便增加这样一个类,就能响应指定的命令了public class ADD : SubCommandBase    {        public override void ExecuteCommand(WebSocketSession session, SubRequestInfo requestInfo)        {            var paramArray = requestInfo.Body.Split(' ');            session.Send((int.Parse(paramArray[0]) + int.Parse(paramArray[1])).ToString());        }    }

客户端的JS代码如下:

ws=new WebSocket("ws://localhost:20000");ws.onmessage=(function(msg){console.log(msg.data)})ws.send("add 5 2")  //控制台响应 7

 

转载于:https://my.oschina.net/u/1540190/blog/725524

你可能感兴趣的文章
Quartz总结(一):Quartz集成Spring的2个方法
查看>>
读取文件,输出单词
查看>>
zabbix常用的python类api
查看>>
Oracle第三章——SQL语言
查看>>
《代码大全》阅读笔记-19-一般控制问题
查看>>
VB编程技巧推荐
查看>>
Django 简介
查看>>
golang array, slice, string笔记
查看>>
java 集合、接口
查看>>
AutoMapper用法
查看>>
维护后面的position + 离线 + 线段树 bzoj 3585
查看>>
StringUtils常用方法+StringUtils详细介绍
查看>>
iOS开发之JSON解析
查看>>
iOS开发之Run Loop
查看>>
PDF 补丁丁 0.5.0.2731 发布(增加去除页面表单和链接水印功能)
查看>>
PDF 补丁丁 0.6.0.3355 版发布(修复阅读模式、书签缩放的问题)
查看>>
python 内嵌模块——time
查看>>
关于form与表单操作
查看>>
网络协议
查看>>
同源策略
查看>>