您在等待调用.onopen 函数吗?您应该仅在建立连接后才在 websocket 上发送消息。你可以试试类似
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
}
更新代码
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');
});
以及没有构造函数或任何其他事件的最简单情况;只是简单/基本的 ws 客户端
var socket = new WebSocket("ws://echo.websocket.org", 'bla');
socket.onopen = function() {
socket.send('msg');
};