我的Web应用程序使用javascript通过HTTP请求与服务器通信。但是,服务器软件已更改,因此它不使用HTTP请求,而是使用WebSocket通信。
重写整个Web应用程序以完全使用开放式通信(即WebSockets)而不是请求 - 响应机制将是一项令人难以置信的繁琐工作,而且我在使用WebSockets进行Web时无法获得任何好处。应用
我希望能够实现的是添加一个通过WebSockets进行通信但仍以请求 - 响应方式进行通信的javascript模块。我想这意味着我必须暂停" javascript直到服务器响应我的WebSocket消息?因为对于HTTP请求,我的Web应用程序一直等到请求被响应。
所以我想它归结为:如何让javascript等到服务器发送WebSocket消息?
干杯
编辑:为了指定,我的Javascript代码通过我命名为" get(URL)"的函数在整个源代码中使用HTTP请求。我想修改此函数,以便它发送WebSocket消息,等待响应并返回响应。有任何想法吗?
答案 0 :(得分:1)
如果我从评论中正确理解你,你实际上并不希望“暂停”你的Javascript,而只是用websocket通信取代异步ajax调用。
您将使用服务器中的预定义密钥向服务器发送消息。如果需要,您可以在消息中使用某种有效负载,然后使用您收到的数据进行回调函数。以下是我为我创建的简单聊天应用程序执行类似操作的示例。
我的客户代码:
socket.emit('join', options, function(res){
_printToChat(res);
});
服务器代码:
socket.on('join', function(roomname, fn){
socket.join(roomname);
fn('You joined ' + roomname);
});
这会发送密钥“join”的消息,并使用服务器的响应调用回调。在这种情况下,客户端中的res将是“您加入”+房间名称。
你可能会做类似的事情:
客户代码:
socket.emit('getSomeResource', options, function(res){
// do something with response in res variable.
});
服务器代码:
socket.on('getSomeResource', function(yourOptions, fn){
fn(resourceToReturn);
});