websocket-shrap源码阅读
来源:互联网 发布:mysql数据文件路径 编辑:程序博客网 时间:2024/05/28 03:01
导入包
Websocket-sharp提供了一个dll文件: /PATH/TO/WEBSOCKET/SHARP/websocket-sharp/bin/Debug/websocket-sharp.dll 。把它拖进项目的reference里面。
搭建一个websocket server
Websocket-sharp提供了websocketserver类,只需要在程序中创建一个它的实例,并且加上server要实现的功能就可以了。
I. 创建一个新的WebSocketServer实例:
使用public constructor:
var wssv = new WebSocketServer (); // default port = 80 var wssv = new WebSocketServer (int port); var wssv = new WebSocketServer (string url); var wssv = new WebSocketServer (int port, bool secure); var wssv = new WebSocketServer (IPAddress address, int port); var wssv = new WebSocketServer (IPAddress address, int port, bool secure);
II. 可用的public methods:
- 添加services:
void AddWebSocketService< TBehaviorWithNew > (string path)
void AddWebSocketService< TBehaviorWithNew > (string path, Action < TBehaviorWithNew > initializer)
wssv.AddWebSocketService<Echo> ("/Echo"); wssv.AddWebSocketService<Echo>("/Echo", () => new Echo(int twice = 2) ); /* * TBehaviorWithNew: 从WebSocketBehavior继承 有无参数的public constructor * path: 到被加入service的绝对路径 */
- 删除services:
bool RemoveWebSocketService(string path)
wssv.RemoveWebSocketService("/Echo"); /* 如果要被删去的service已经运行,它将会以close status 1001(gonging away)停止。 */
- 开始接受握手请求:
void Start()
wssv.Start();
- 停止接受握手请求,并关闭所有连接:
void Stop()
void Stop(ushort code, string reason)
void Stop(CloseStatusCode code, string reason)
wssv.Stop(); wssv.Stop(1005, String.Empty);
III. 可用的public properties:
/* get */System.Net.IPAddress Addressbool IsListeningbool IsSecureLogger Loging PortServerSslConfiguration SslConfigurationWebSocketServiceManager WebSocketServices/* get & set */bool AllowForwardedRequestAuthenticationSchemes AuthenticationSchemesbool KeepClean //server定期清除不活跃的sessionstring Realmbool ReuseAddressFunc<IIdentity, NetworkCredential> UserCredentialsFinderTimeSpan WaitTime
IV. WebSocketBehavior抽象类
继承WebSocketBehavior,创建新的TBehaviorWithNew类来定义server提供的service。
下面是WebSocketBehavior自带的protected methods:
void Error(string message, Exception exception); //调用OnError记录错误信息,message为空时调用不发生virtual void Onclose(CloseEventArgs e); //当session关闭virtual void OnError(ErrorEventArgs e); //当session得到错误virtual void OnMessage(MessageEventArgs e); //当session收到messagevirtual void OnOpen(); //当session建立void Send(byte[] data); //向client发送二进制数据void Send(FileInfo file); //向client发送文件数据的二进制形式void Send(string data); //向client发送字符数据void SendAsync(byte[] data, Action<bool> completed);void SendAsync(FileInfo file, Action<bool> completed);void SendAsync(string data, Action<bool> completed);void SendAsync(Stream stream, ing length, Action<bool> completed);/*向client异步发送数据,(发起发送的方法不等待至发送完成),当发送成功完成后,会调用调用附带的action*/
下面是WebSocketBehavior提供的properties:
/* get */protected Logger Log //日志记录protected WebSocketSessionManager Sessions //access to the sessionspublic WebSocketContext Context //握手请求的信息/* get & set */public Func<CookieCollection, CookieCollection, bool> CookiesValidator //HTTP cookiespublic bool EmitOnPing //被ping时是否回复public string ID //ID of a sessionpublic bool IgnoreExtensionspublic Func<string, bool> OriginValidatorpublic string Protocolpublic WebSocketState State
阅读全文
0 0
- websocket-shrap源码阅读
- WebSocket源码编译
- 阅读源码
- 阅读源码
- 阅读源码
- 源码阅读
- spring4 + WebSocket笔记 [含源码]
- JUnit源码阅读 -- 阅读基础
- 源码阅读系列:为什么要阅读源码?
- 源码阅读系列:源码阅读方法
- 阅读贪吃蛇源码
- 阅读贪吃蛇源码
- 阅读贪吃蛇源码
- 阅读贪吃蛇源码
- 如何阅读Linux源码
- DotText源码阅读(0)
- 阅读prototype源码
- 如何阅读Linux源码
- 使用Docker部署 spring-boot maven应用
- 计数问题-vijos
- Ubuntu Linux 显卡驱动安装
- 大三才开始想写博客
- Angular4_bootstrap模态框打开关闭,点击背景事件
- websocket-shrap源码阅读
- Python学习笔记(2)——print
- 针对不同浏览器,进行附件名的编码
- LeetCode-268. Missing Number
- [转]sublime text 3 快捷键大全
- 注释转换(c语言注释转为c++注释)
- SSH for 码云
- 进制转换
- 对BFC规范的理解?