无法获得基本的socket.io示例在客户端上工作

问题描述:

我使用可在nodejs.org网站上下载的.msi包在我的Windows服务器上安装Node,并且运行良好。然后我跑了npm install socket.io,那也很好。它将socket.io安装到C:\node_modules\socket.io。我将在socket.io网站上找到的示例服务器代码添加到名为app.js的新文件中。我做的唯一更改是端口号为1337.然后,我使用app.js启动Node,如下所示:node app.js进入命令行,并获得info: socket.io started消息。无法获得基本的socket.io示例在客户端上工作

在客户端 - 我的OSX笔记本电脑上,我正在开发我的web应用程序 - 我不确定如何正确获取socket.io.js文件及其所有依赖项,以便将其包含在我的HTML页面的<script>标记中。从socket.io Wiki上的How do I serve the client FAQ页面:

客户端由Node.JS服务器自动提供。在你的HTML标记的,包括:

<script src="http://<uri:port>/socket.io/socket.io.js"></script> 

所以,我说这我的index.html页面:

<script src="http://my.windows.server.domain.com:1337/socket.io/socket.io.js"></script> 

当我上传我的index.html文件到我的网络服务器,并指向我的浏览器,我检查控制台,并找到:

XMLHttpRequest cannot load http://localhost/socket.io/1/?t=1330983853883. Origin http://my.web.server.domain.com is not allowed by Access-Control-Allow-Origin.` 

有没有人遇到此消息与socket.io?关于如何让客户端包含它需要的代码的任何提示,我可以开始使用socket.io的精彩内容了?

这是因为通常XHR不能跨域(并且在升级到socket.io协议之前,初始“握手”通过XHR)。你有没有使用默认的socket.io设置?尝试添加:

io.set("origins","*"); 

在您的socket.io服务器设置中。如果这不起作用,那么也许你使用旧版本的socket.io?我认为0.9是最新的。

+0

不,没有触及默认的socket.io服务器设置。但是,从socket.io网站上的index.html示例代码,它有这样一行:'var socket = io.connect('localhost');',所以我意识到我的socket.io服务器是不一样的作为我的网络服务器,例如假设。我把'io.connect('localhost');'改成'io.connect('http://my.windows.server.domain.com:1337');'现在它正在工作。 – ariestav 2012-03-05 22:42:41

+0

哦,我假设你在'io.connect()'中输入了正确的域名。 :)我很高兴它现在适合你。祝NodeJS和socket.io好运! – freakish 2012-03-05 22:46:35