C#WebSockets客户端到MVC服务器

时间:2013-11-20 19:37:32

标签: c# asp.net-mvc websocket

我有一个API控制器,可以创建一个Web套接字连接,并且在使用JavaScript时可以很好地连接和交互,但我也希望能够使用C#客户端连接到它。我尝试了几个不同的库(Alchemy,WebSocket4Net和WebSocket-Sharp),它们似乎都在连接打开时超时。

以下是服务器端的代码:

class WsController : ApiController
{
  public HttpResponseMessage Get(string id)
  {
    HttpContext.Current.AcceptWebSocketRequest(new WsHandler(id));
    return Request.CreateResponse(HttpStatusCode.SwitchingProtocols);
  }

  internal class WsHandler : WebSocketHandler
  {
    public WsHandler(string id) { /* ... */ }
  }
}

如果我使用的是JS客户端,我可以使用var ws = new WebSocket(url + "?id=someid");进行连接,然后发送和接收消息。使用C#客户端时,我在握手期间卡住,连接超时。这是使用WebSocket4Net的一些示例代码。

var ws = new WebSocket(url);
ws.Opened += new EventHandler(ws_Connect);
ws.Closed += new EventHandler(ws_Disconnect);
ws.Error += new EventHandler<ErrorEventArgs>(ws_Error);
ws.MessageReceived += new EventHandler<MessageReceivedEventArgs>(ws_Receive);
ws.Open(); // Timeout on this line. No errors are thrown to ws_Error.

是否有另一种方法可以使用MVC ApiController创建websocket服务器?

0 个答案:

没有答案