2014-03-27 174 views
0

有人可以幫忙嗎?我需要處理來自這個WebSocket客戶端的狀態事件(ReadyState),但是當我實現EventHandler時出錯,不知道我在做什麼錯誤。如何處理WebSocket客戶端事件

我得到的錯誤是:運算符「+ =」不能被應用於類型「WebSocketSharp.WebSocketState」和「System.EventHandler」的操作數。

這裏是我想要執行的事件處理程序:

this.ws.ReadyState + =新的EventHandler(webSocketClient_StatusChange);

下面是代碼:

WebSocket ws; 

    public Form1() 
    { 
     InitializeComponent(); 
     this.ws.ReadyState += new EventHandler(webSocketClient_StatusChange); 

    } 

    private void webSocketClient_StatusChange(object sender, EventArgs e) 
    { 
     MessageBox.Show("WebSocket Status Changed..."); 
    } 



    public void webSocketClientConnection() 
    { 
     ws = new WebSocket("ws://"192.168.1.165":1258"); 

     { 
      ws.OnMessage += (sender, e) => 
       { 
        string value = (e.Data); 
       // More code goes here 
       }; 

      ws.Connect(); 
      ws.Send("Welcome message"); 
     } 

    } 

請幫助。

回答

2

readyState爲這將保持一個值,指示一個屬性:

  • CONNECTING(0)
  • OPEN(1)
  • CLOSING(2)
  • CLOSED(3)

您可以使用此活動:

  • 的OnClose
  • 的OnError
  • 的onMessage
  • 的OnOpen

編輯:

聲明是這樣的事件:

this.ws.OnClose += System.EventHandler<WebSocketSharp.CloseEventArgs>(webSocketClient_OnClose); 

而且方法webSocketClient_OnClose必須有個E更正參數,像這樣:

void webSocketClient_OnClose(object sender, WebSocketSharp.CloseEventArgs e) 
{ 

} 
+0

我嘗試這樣做:this.ws.OnClose + =新的EventHandler(webSocketClient_StatusChange);但現在我得到這個錯誤:不能默示將類型'System.EventHandler'轉換爲'System.EventHandler '@tweellt – AJ152

+0

你使用什麼websocket? – tweellt

+0

當前使用WebSocketSharp; WebSocketSharp.Net;和WebSocketSharp.Net.WebSockets; – AJ152