And*_*rea 1 javascript html5 websocket
我试图为websocket创建一个Read\Write函数,但我有一个问题......
var inarrivo = 0;
var risposta = "";
function RDW_Command(Stringa) {
var Risposta = "";
Stringa = "$" + Stringa;
socket.send(Stringa);
inarrivo = 0;
while (inarrivo == 0) {
doNothing();
}
return risposta;
}
function doNothing() {}
socket.onmessage = function (msg) {
risposta = msg.data;
inarrivo = 1;
};
Run Code Online (Sandbox Code Playgroud)
问题是当它进入while循环时它会冻结....有什么想法来修复它吗?>.<谢谢!! 安德里亚
您可以使用常规(以javascript)事件/回调方式在javascript中编写websockets.
这是一个例子:
var somePackage = {};
somePackage.connect = function() {
var ws = new WebSocket('ws://'+document.location.host+'/ws');
ws.onopen = function() {
console.log('ws connected');
somePackage.ws = ws;
};
ws.onerror = function() {
console.log('ws error');
};
ws.onclose = function() {
console.log('ws closed');
};
ws.onmessage = function(msgevent) {
var msg = JSON.parse(msgevent.data);
console.log('in :', msg);
// message received, do something
};
};
somePackage.send = function(msg) {
if (!this.ws) {
console.log('no connection');
return;
}
console.log('out:', msg)
this.ws.send(window.JSON.stringify(msg));
};
Run Code Online (Sandbox Code Playgroud)
你打电话somePackage.connect打开连接.之后,消息到达将在onmessage处理程序中处理,并向您刚刚调用的服务器发送消息somePackage.send.
即使这是充满异步调用,这并不意味着您的程序不会立即对消息的到达做出反应(只要您的其他函数因为只有一个线程而停止工作).
| 归档时间: |
|
| 查看次数: |
5340 次 |
| 最近记录: |