我正在使用一个开源项目,该项目使用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消息的服务器吗?
答案 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资源