【求助】 node.js 如何实现这个功能
发布于 12 年前 作者 workgang 7329 次浏览 最后一次编辑是 8 年前

我需要在 服务器端用 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。

麻烦知道的朋友给我个思路。

谢谢各位了。

7 回复

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 的热心回复。 问题已经解决!

能不能分享一下你的代码。需要… 给个思路也行

回到顶部