状态200上的WebSocket错误是什么? [英] What is the WebSocket error on status 200?
问题描述
我已经购买了WebSocket模块并将其安装在WAMP环境中.我也有一个PHP脚本,可以在正确的位置生成IPC文件,并永远循环以侦听事件.但是,使用此客户端代码:
I have bought a WebSocket module and installed it on my WAMP environment. I also have a PHP script which generates the IPC file at the correct location and loops forever to listen to events. However, using this client-side code:
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);
}
触发连接后,我的请求失败,并出现以下错误:
When a connection is triggered, my request fails with the following error:
WebSocket连接到 'ws://websocket-example/WebSocket/websocket-example-websocket.rp' 失败:WebSocket握手期间出错:意外的响应代码: 200
WebSocket connection to 'ws://websocket-example/WebSocket/websocket-example-websocket.rp' failed: Error during WebSocket handshake: Unexpected response code: 200
和websocket
保持null
.我绝对不理解此错误,因为200似乎是可以的状态,但是我的请求仍然失败. IPC文件是在服务器启动后生成的,位于正确的位置,并且执行脚本的用户具有请求该文件的必要特权.这种现象的原因是什么,我该如何解决?
and websocket
remains null
. I absolutely do not understand this error, as 200 seems to be an OK status, but still, my request fails. The IPC file was generated after server start, is at the correct location and the user executing the script has the necessary privileges to request the file. What is the reason of this behavior and how can I fix it?
推荐答案
在WebSocket连接上,您需要101 Switching Protocols
状态响应.
获得200
状态响应,可能意味着该请求未到达您的WebSocket处理程序.
On a WebSocket connection you want a 101 Switching Protocols
status response.
Getting a 200
status response, probably means that the request didn't reach your WebSocket Handler.
我还将研究开发工具,并检查响应中是否包含任何WebSocket握手标头.
如果有的话,我认为这是该模块的问题.否则,可能是您的配置.
I would also look into the dev-tools, and check if the response has any WebSocket handshake headers.
If it has, I would assume it's a problem with the module. Otherwise it's probably your configuration.
这篇关于状态200上的WebSocket错误是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!