长轮询服务器原理(客户端识别)

Posted

技术标签:

【中文标题】长轮询服务器原理(客户端识别)【英文标题】:Long polling server principle (client identification) 【发布时间】:2011-05-14 01:57:20 【问题描述】:

我想在 node.js 中创建一个简单的长轮询服务器,其中通信将基于 jsonp 请求。我知道客户端发出请求,服务器保持响应,直到一些数据准备好或达到某个超时,然后客户端发出新请求以保持事情的进行。发出第一个请求后,会生成并存储会话 ID,以保留活动连接的客户端列表。现在,在从服务器到客户端的第一次响应之后,我如何识别任何其他请求属于我的活动连接列表中的哪个客户端?

我可以想象这样做:服务器的第一个响应将分配的会话 ID 发送给客户端,然后在发出下一个请求时根据此 ID 识别他。但我认为这种方法很容易被利用并且容易被盗用。

【问题讨论】:

【参考方案1】:

我会使用cookie。

如果我担心 ID 被盗,对我来说下一步是使用 SSL。

【讨论】:

【参考方案2】:

我建议您不要自己编写所有代码,而是使用一个可行且经过测试的解决方案:https://github.com/LearnBoost/Socket.IO-nodehttps://github.com/LearnBoost/Socket.IO

Socket.IO 会为您处理所有连接内容,它会自动选择最佳的连接方法,例如 WebSockets,并在它们不可用时优雅地回退。

【讨论】:

我知道 Socket.IO,但这只是我的兴趣爱好,如果你明白我的意思的话 :)。 那么让我说 JSONP 是最糟糕的选择,它是最不安全的消息传递方式,因为它直接执行 javascript(包括其中的任何函数)。 问题出在同源策略中,而 JSONP 是(据我所知)适用于所有浏览器的唯一方法。甚至谷歌也将它用于各种东西(例如googlecode.blogspot.com/2010/11/…)。

以上是关于长轮询服务器原理(客户端识别)的主要内容,如果未能解决你的问题,请参考以下文章

Tornado-长轮询_webSocket

轮询与长轮询[关闭]

轮询与长轮询

求教,django与长轮询,该怎么解决

轮询和长轮询优缺点分析

轮询和长轮询