CNode

【求助】 node.js 如何实现这个功能

Wworkgang发布于14 年前最后回复14 年前7 回复8348 浏览0 收藏

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

H
haosxianr#1·14 年前
引用 workgang感谢 sevencity 的热心回复。 问题已经解决!

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

Y
yutingzhao1991#2·14 年前

node官网的chat聊天室 http://chat.nodejs.org/ 这个貌似是用长连接做的,你可以找源代码看看。

L
leizongmin#3·14 年前

没看懂你说的是神马,是这个意思么?

http.createServer(function (req, res) {
  setTimeout(function () {
    res.write('又一行消息\n');
  }, 100);
}).listen(1234);
S
sevencity#4·14 年前

首先你要用到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); }); }

L
leolovenodejs#5·14 年前

socket.io可以吗?不太懂,这只是个方向。

W
workgang#7·14 年前

感谢 sevencity 的热心回复。 问题已经解决!

参与回复
登录后即可参与回复。登录