Socket.io可以连接到什么?

时间:2014-01-04 16:37:36

标签: javascript node.js socket.io

我正在使用一个开源项目,该项目使用Socket.IO连接到托管在不同服务器上的网站chat.meatspac.es。它像这样连接

var socket = socketClient.connect('https://chat.meatspac.es');

然后它会侦听也在chat.meatspac.es上发布的数据。这是否有效,因为chat.meatspac.es也是一个Socket.IO应用程序,并且它发出的信号可以被其他开源项目获取?

例如,我天真地尝试连接到我的Twitter流

 var socket = socketClient.connect('https://twitter.com/username');

但它不会收听我的Twitter Feed中发布的消息。

所以,我的问题是,Socket.IO只能连接到发出Socket.IO消息的服务器吗?

1 个答案:

答案 0 :(得分:2)

socket.io允许模拟套接字API(在传统桌面应用程序中使用)以使用javascript(web)进行访问。

但这与传统套接字的行为完全不同。它使用HTML5 websockets进行套接字模拟

Sockets.io需要有一个兼容的服务器应用程序,通过使用nodejs部署服务器应用程序显示here

今天看一下websockets的服务器端实现,socket.io,其中nodejs就是其中之一。 http://www.html5rocks.com/en/tutorials/websockets/basics/

因此,对于使用socket.io创建与twitter的套接字连接的问题:

var socket = socketClient.connect('https://twitter.com/username');

这是不可能的,因为socket.io不是一个真正的套接字API,它只是使用 HTML5 websocket api 和其他回退(长轮询,彗星等)模拟套接字api。所以服务器应该兼容处理ws(websocket协议)请求,如果在这里获取源流,这不是这种情况,因此不能这样做。

请参阅 twitter api 以编程方式访问Twitter资源

https://dev.twitter.com/docs/api/1.1