簡體   English   中英

websocket連接失敗?

[英]websocket connection fails?

我是Web套接字的新手,並嘗試使用asp.net Generic Handler和JavaScript WebSocket Class創建一個

JavaScript的

<script type="text/javascript">
    window.onload= function () {

        var name = prompt('what is your name?:');            
        var url = 'ws://localhost:5707/ws.ashx?name=' + name;    
        var ws = new WebSocket(url);    
        ws.onopen = function () {
            alert('Connection Opened');
        };
            ws.onmessage = function (e) {
        };
            ws.onclose = function () {
            alert('Connection Close');
        };
            ws.onerror = function (e) {
            alert('Error')
        };

        }

</script>

C#Generic Handler稱為ws.ashx

public class ws : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        if (context.IsWebSocketRequest)
            context.AcceptWebSocketRequest(new TestWebSocketHandler());
    }
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

類TestWebSocketHandler,它繼承自WebSocketHandler

   public class TestWebSocketHandler : WebSocketHandler
    {
        private static WebSocketCollection clients = new WebSocketCollection();
        private string name;

        public override void OnOpen()
        {
            this.name = this.WebSocketContext.QueryString["name"];
            clients.Add(this);
            clients.Broadcast(name + " has connected.");
        }

        public override void OnMessage(string message)
        {
            clients.Broadcast(string.Format("{0} said: {1}", name, message));
        }

        public override void OnClose()
        {
            clients.Remove(this);
            clients.Broadcast(string.Format("{0} has gone away.", name));
        }

    }

我的問題是

當websocket打算打開時,我注意到當去了處理程序時

context.IsWebSocketRequest // returns false

然后它會激活客戶端的錯誤說

Firefox無法在ws:// localhost:5707 / ws.ashx?name = j建立與服務器的連接

然后關閉連接實例化

我需要知道問題出在哪里? 和藹

我在Windows 7下使用vs 2013,我認為它是我工作的IIS 6

WebSockets僅適用於在Windows 8或Windows 2012上運行的ASP.NET應用程序。 盡管API已包含在.NET 4.5.1中,但如果您不使用這些操作系統,它將無法運行。 實際上,如果您嘗試使用ClientWebSocket ,它將拋出PlatformNotSupportedException

如果您無法獲得任何這些操作系統,可以查看備選方案:

原因可能是以下任何一種:

  1. IIS版本<8
  2. Windows功能下未啟用Web套接字協議
  3. .NET Framework版本<4.5
  4. 不包括web.config的system.webServer部分中的以下行:
<handlers>
    <add path="/ws.ashx" verb="*" name="ws" type="namespace.ws"/>
</handlers>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM