无法获得基本的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是最新的。
不,没有触及默认的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
哦,我假设你在'io.connect()'中输入了正确的域名。 :)我很高兴它现在适合你。祝NodeJS和socket.io好运! – freakish 2012-03-05 22:46:35