我需要在 服务器端用 node.js 和 淘宝的服务器通过 http 协议建立一个长连接。
网上的教程基本上都是 浏览器端用js 和 服务器端的 node.js 通过 socket 建立长连接实现聊天室之类的。
我想知道。
如果需要服务器端的 node.js 和 其他服务器端 通过 http 协议建立长连接应该怎么操作呢?
一些说明如下:
传统的http请求是您发送一个请求,服务端响应您一段HTML\XML\JSON,然后介绍,关闭连接。
长连接是,您发送了一个http请求,请求了一段永远没有ending的HTML\XML\JSON,这段没有ending的数据,每一行都是一个消息。
app主动发起POST请求 请求url为:http://stream.api.taobao.com/stream
Server端在一段时间内保持连接,在这段时间内产生的消息都发往这个连接。 当有消息产生后,Server端通过这个连接把消息实时的推送给app。
麻烦知道的朋友给我个思路。
谢谢各位了。
node官网的chat聊天室 http://chat.nodejs.org/ 这个貌似是用长连接做的,你可以找源代码看看。
没看懂你说的是神马,是这个意思么?
http.createServer(function (req, res) {
setTimeout(function () {
res.write('又一行消息\n');
}, 100);
}).listen(1234);
首先你要用到http.request(options, callback) 这个方法 然后要在请求的header里面加上keep-alive 大概写法如下(没测)
var https = require('http');
taobaorequest = function(user) { var options = { host: ‘http://stream.api.taobao.com/stream’, port: 80, path: ‘xxx’, method: ‘post’, headers: { Connection’:‘keep-alive’ } }; var req = https.request(options).on(‘response’, function(response) { var body = ‘’; response.on(‘data’, function(data) { body += data; try { //response something } catch (e) { //console.log(“error”); } }) }); req.end(); req.on(‘error’, function(e) { console.error(e); }); }
socket.io可以吗?不太懂,这只是个方向。
非常感谢您。 辛苦了。 我去试试看。
感谢 sevencity 的热心回复。 问题已经解决!
能不能分享一下你的代码。需要… 给个思路也行