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

时间:2012-03-05 21:59:48

标签: node.js

我使用.msi软件包在我的Windows服务器上安装了Node,该软件包可以在nodejs.org网站上下载,并且运行正常。然后我跑了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消息。

在客户端 - 我正在开发我的网络应用程序的OSX笔记本电脑 - 我不确定如何正确获取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的真棒?

1 个答案:

答案 0 :(得分:1)

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

io.set("origins","*");
在您的socket.io服务器设置中

。如果这不起作用,那么也许您使用旧版本的socket.io?我认为0.9是最新的。