Are you waiting for the .onopen
function to be called ? you are supposed to send message on a websocket only after the connection is established. you can try something like
function Connector() {
this.protocol = "bla";
this.socket = new WebSocket("ws://echo.websocket.org", this.protocol);
this.connected = false;
}
Connector.prototype.emit = function() {
if(this.connected) {
try {
this.socket.send('abc');
return true;
}
catch(err) {
console.log('Error' + err.message);
return false;
}
}
else {
console.log('CRITICAL Error No WS');
return false;
}
}
con.socket.onopen = function() {
console.log("webSocket Connected");
con.connected = true;
//send message here
con.emit();
};
con.socket.onclose = function(e) {
//closed
con.connected = false;
};
con.socket.onerror = function(e) {
console.log("Error",e);
};
con.socket.onmessage = function(msg) {
//msg
}
UPDATED CODE
function Connector(protocol, cB){
var self = this,
this.protocol = protocol,
this.socket = new WebSocket("ws://echo.websocket.org", this.protocol),
this.connected = false;
this.socket.onopen = function() {
self.connected = true;
cB();
};
this.socket.onclose = function(e) {
self.connected = false;
//closed, inform(event)
};
this.socket.onerror = function(e) {
//error, inform(event)
};
this.socket.onmessage = function(msg) {
//msg, inform(event)
}
}
Connector.prototype.emit = function(msg) {
if(this.connected) {
try {
this.socket.send(msg);
return true;
}
catch(err) {
console.log('Error' + err.message);
return false;
}
}
else {
console.log('CRITICAL Error No WS');
return false;
}
}
var con = new Connector('blah',function() {
con.emit('abc');
});
and the simplest case with out a constructor or any other events; Just simple/basic ws client
var socket = new WebSocket("ws://echo.websocket.org", 'bla');
socket.onopen = function() {
socket.send('msg');
};