交换数据
我有以下情况,即已经发送了头的问题发生,通过AJAX从服务器发送多个请求时,客户端: 交换数据
这是我因为我选择使用AJAX而不是套接字。是否有其他的方式来交换服务器和客户端之间的数据,比如使用browserify来为客户端翻译发射器脚本?我想我不能逃脱套接字,所以我会采取关于更简单的库的建议,因为sockets.io似乎对于这么小的操作来说太复杂了。 // ------------------------- 更新: 这是请求的node.js代码。
var maxRunning = 1;
var test_de_rf = ['rennen','ausgehen'];
function callHandler(word, cb) {
console.log("word is - " + word);
gender.gender_function_rf(word , function (result_rf) {
console.log(result_rf);
res.send(result_rf);// Here I send data back to the ajax call
setTimeout(function() { cb(null);
}, 3000);
});
}
async.eachLimit(test_de_rf, maxRunning, function(item, done) {
callHandler(item, function(err) {
if (err) throw new Error(err);
done();
});
}, function(err) {
if (err) throw new Error(err);
console.log('done');
});
res.send()
发送并完成http响应。每个请求只能调用一次,因为请求在调用完成后完成。这是发送回复的相当高级别的方式(在一次调用中一次全部完成)。
如果你想有促进响应一些不同的功能,你可以使用lower level functions on the http object如res.setHeader()
,res.writeHead()
,res.write()
(你可以多次调用)和res.end()
(表示响应的结束)。
您可以使用标准的WebSocket API在浏览器中得到的WebSocket模块服务器端支持,也可以使用socket.io它提供了客户端和服务器的支持和一些更高级功能(如自动重新连接,自动故障转移到HTTP轮询,如果不支持webSocket等等)。
所有这一切说,如果你真的想要的是刚刚从服务器发送一些数据到客户端的能力,只要你想,那么WebSocket的是真正的更好的方式去。这是一个持久连接,由所有现代浏览器支持,并允许服务器随时向客户端主动发送数据。我几乎不会说socket.io是复杂的。该文档在解释事情方面并不是特别好(在开源世界中并不罕见,因为node.js文档也不是特别好)。但是,我一直能够通过在调试器中查看几个运行时数据结构和/或查看源代码来找出高级问题。
谢谢,伙计!在确认websocket是答案之后,我迅速设法解决了这个问题,这要归功于http://stackoverflow.com/questions/9914816/what-is-an-example-of-the-simplest-possible-socket -io-示例 – 2015-03-09 13:49:44
我们可以看到为您的ajax请求提供问题的node.js代码吗? – bluetoft 2015-03-08 21:18:57
我几乎不会说socket.io是复杂的。事实上,它简化了一些你必须用webSocket自己做的事情。如果你想要一个可以随时向客户发送消息的专用连接,那么websocket的核心就是你想要从浏览器到服务器的想法,而socket.io是在webSockets之上的更高层次的实现(它为您提供一些免费的有用功能,如自动重新连接)。 – jfriend00 2015-03-08 23:35:06