微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 状态200上的WebSocket错误是什么?

我已经购买了一个WebSocket模块并将其安装在我的WAMP环境中.我还有一个PHP脚本,它在正确的位置生成IPC文件并永远循环以监听事件.但是,使用此客户端代码

var websocket = null;

var connect = function() {
    var button = document.getElementById('connect-button');
    // This function is a convenience function, to set the content
    // of the response display
    var setResponse = function(text) {
        var element = document.getElementById('response');
        element.innerHTML = text;
    }
    // A message telling the user we started connecting is always
    // useful
    button.innerHTML = 'Connecting ...';
    // The file name `demo.ws' Could in principle help in having multiple
    // websockets at a single domain name.
    //
    // It's not implemented right Now, but it can be if it's needed and
    // it's not too hard.    
    //var url = "ws://websocket-example/websocket-example/websocket-example-websocket.rp";
    var url = 'ws://' + window.location.hostname + '/WebSocket/websocket-example-websocket.rp';
    // Create the websocket connection Now    
    websocket = new WebSocket(url, 'standard');
    // Install the handlers, the On Open handler is triggered
    // immediately after the conection has been established
    // and a successful handshake
    websocket.onopen = function(event) {
        // Update the connection status indicator
        var element = document.getElementById('connection-status');
        var input = document.getElementById('input');
        element.innerHTML = 'Connected Now';
        element.setAttribute('class', 'online');
        // Update the button, and install a new handler to allow
        // closing the websocket connection
        button.innerHTML = 'Close';
        button.onclick = function() {
            websocket.close();
        }
        input.focus();
        input.value = '';
    }
    // On close and on error handler, this is a simple demo
    // hence the simplistic approach. Ideally this should be
    // two separate functions
    websocket.onclose =
    websocket.onerror = function(event) {
        // Update the connection status indicator
        var element = document.getElementById('connection-status');
        var input = document.getElementById('input');
        element.innerHTML = 'Offline';
        element.setAttribute('class', 'offline');
        // Update button click handler, to reconnect if requested
        button.innerHTML = 'Connect';
        button.onclick = connect;
        input.value = '';
        // Clear the response text
        setResponse('');
        // Reset the websocket global variable
        websocket = null;
    }
    // On message handler, triggered when a message is received
    websocket.onmessage = function(event) {
        // Set the response text
        setResponse(event.data);
    }
}

var send = function(message) {
    // Send a message to the server but check that the websocket
    // was connected first
    if (websocket === null)
        return;
    // It's ok so, send the message Now
    websocket.send(message);
}

触发连接时,我的请求失败,并显示以下错误

WebSocket connection to
‘ws://websocket-example/WebSocket/websocket-example-websocket.rp’
Failed: Error during WebSocket handshake: Unexpected response code:
200

和websocket保持为null.我绝对不明白这个错误,因为200似乎是一个好的状态,但仍然,我的请求失败了. IPC文件是在服务器启动后生成的,位于正确的位置,执行脚本的用户具有请求文件的必要权限.这种行为的原因是什么,我该如何解决

解决方法:

在WebSocket连接上,您需要101个交换协议状态响应.
获得200状态响应可能意味着请求未到达WebSocket Handler.

我还会查看dev-tools,并检查响应是否有任何WebSocket握手头.
如果有,我会认为这是模块的问题.否则它可能是你的配置.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐