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 connection to 'ws://websocket-example/WebSocket/websocket-example-websocket.rp' failed: Error during WebSocket handshake: Unexpected response code: 200
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?