【问题标题】:node.js game example only works on my computernode.js 游戏示例仅适用于我的计算机
【发布时间】:2013-12-07 22:22:59
【问题描述】:

我正在使用这个游戏示例:https://github.com/robhawkes/mozilla-festival

我在 C:\Program Files (x86)\Apache Group\Apache2\htdocs\games\websockets 中拥有它

我正在运行“node game.js”,game.js 文件位于公共文件夹旁边。

我正在使用 Apache 在端口 80 上运行服务器。

目前它仅在我从计算机连接到它时才有效(每次我在新窗口中打开它时都会创建一个播放器)。但是当我尝试从另一台计算机连接到它时,它给了我这些错误:

GET http://localhost:8000/socket.io/socket.io.js

Uncaught ReferenceError: io is not defined

我的网站上的游戏:http://123testing.no-ip.biz/games/websockets/public/

我错过了什么吗? 对不起,如果这是一个非常愚蠢的问题!

编辑:让它工作!谢谢,Louis 和 SVN,你们都很棒。最后一个问题是在我的 game.js 中它连接到 localhost。

【问题讨论】:

    标签: node.js websocket socket.io


    【解决方案1】:

    您已在 HTML 中硬编码服务器地址:

    <script src="http://localhost:8000/socket.io/socket.io.js"></script>
    

    从中删除服务器地址,就像对其他脚本所做的那样。要么这样:

    <script src="/socket.io/socket.io.js"></script>
    

    或者这会起作用:

    <script src="socket.io/socket.io.js"></script>
    

    取决于脚本在您的服务器上的物理位置。我认为第二个可能是您想要的,但我不确定,因为我看到了两者都可能的证据。

    (ETA:使用“localhost”作为服务器地址来加载本应由公众加载的 HTML 中的资源绝对是错误的。不幸的是,您的服务器设置还有其他问题,我无法诊断.)

    【讨论】:

    • 硬编码是什么意思?我将如何让它变得相对?
    • 好的,我用 /socket.io/socket.io.js 替换了它,现在它说:GET localhost:8000/socket.io/1/?t=15349081350913
    • 试试我给出的第二个例子,没有前导斜杠。
    • 我尝试不使用前导斜杠,但现在它在任何一台计算机上都不起作用,给出相同的错误:GET 123testing.no-ip.biz/games/websockets/public/socket.io/… 404 (not found) and Uncaught ReferenceError: io is not defined
    • 正确的用法是,现在客户端向服务器发送带有令牌的socket.io连接请求,但是服务器没有对此做出响应,我认为这与您设置服务器以供外部访问的方式有关。如果您想通过公共 ip 公开访问它,您需要确保您的端口已转发。希望有帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多