2015-06-19 97 views
1

根據互聯網上的一些樣本和this guide,我創建了一個webSocket的連接。爲什麼HttpContext.AcceptWebSocketRequest函數在獲取實例時發生錯誤?

public class sockets: IHttpHandler { 

    public bool IsReusable { 
     get { 
      throw new NotImplementedException(); 
     } 
    } 
    public void ProcessRequest(HttpContext context) { 
     if (context.IsWebSocketRequest) { 
      context.AcceptWebSocketRequest(new socketHandler()); 
     } 
    } 
} 

public class socketHandler: WebSocketHandler { 

    public socketHandler(): base(null) {} 
} 

有一個在線 -

context.AcceptWebSocketRequest(new socketHandler()); 

一個錯誤的錯誤:

Argument 1: cannot convert from 'socketHandler' to 'System.Func(System.Web.WebSockets.AspNetWebSocketContext,System.Threading.Tasks.Task)'

誰能幫助我?

回答

3

AcceptWebSocketRequest將方法作爲參數,而不是類實例。你的代碼應該看起來像這樣:

public void ProcessRequest(HttpContext context) { 
    if (context.IsWebSocketRequest) { 
     context.AcceptWebSocketRequest(HandleWebSocket); 
    } 
} 

private Task HandleWebSocket(WebSocketContext wsContext) 
{ 
    // Do something useful 
} 
+0

感謝您的幫助..然後我在指南中鏈接的樣本是錯誤的?然而,在socketHandler類中,我實現了OnOpen,OnMessage等功能......現在我不明白這些功能何時會發生?更重要的是,JavaScript中的onOpen函數何時會發生? –

+0

你應該看看這個SO問題,其中一個答案可能適合你的需求。 http://stackoverflow.com/questions/25668398/using-websockets-with-asp-net-web-api – Pieter

1

你在從Microsoft.Web.WebSockets嘗試使用函數時引用System.Web中的函數。
添加適當的參考,它將工作。

+0

謝謝你的工作。該教程似乎沒有代碼下載。這真的幫助我解決了這個問題 –

相關問題