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