2012-06-08 19 views
0

所以我制作了一个使用node.js,socket.io和kineticJS的多人空间射击游戏。 我的Node.js服务器实际上并不提供客户端的页面。我的客户端文件目前托管在我的计算机上的本地Apache服务器上。托管在heroku上的节点服务器不能提供socket.io文件

现在节点服务器在Heroku上运行并且我似乎无法在客户端上加载socket.io。我不断收到“io未定义”错误。 这是我如何导入脚本:

<script src="http://xxx-xxx-xxxx.herokuapp.com:5000/socket.io/socket.io.js"></script> 

我按照这里的指示进行操作:https://devcenter.heroku.com/articles/nodejs 而我的package.json文件看起来像这样:

{ 
    "name": "Grid-Frontier", 
    "version": "0.0.1", 
    "dependencies": { 
     "socket.io": "0.9.x" 
    }, 
    "engines": { 
     "node": "0.6.x" 
    } 
    } 

localhost上一切都很好,我只需做到以下几点:

// Importing on client side 
    <script src="http://localhost:8080/socket.io/socket.io.js"></script> 

    // Server-side 
    server.listen(8080); 
    socket = io.listen(server); 
+0

不相关,但只是一个提醒:Heroku不支持websockets,你应该设置xhr-polling – Mustafa

+0

你也遵循这个吗? https://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-heroku –

+0

'socket.io.js'究竟载入?尝试手动浏览文件位置或使用开发人员工具中的网络选项卡。这听起来像浏览器无法加载客户端库。 – MartinodF

回答

1

因为Heroku的允许你只在80端口进行通信,则不能使用其他口服因此地址应为:http://xxx-xxx-xxxx.herokuapp.com/socket.io/socket.io.js不是端口5000.实际上端口5000上没有任何内容,它在机器内部。

+0

非常感谢您的回复。删除端口号完美地工作! 看来我还必须将我的Apache更改为绑定到端口80,以便它匹配heroku。 –

相关问题