动态连接到socket.io.

时间:2013-04-11 11:57:19

标签: node.js socket.io

我正在尝试通过socket.io将浏览器连接到我的应用程序。

<script type="text/javascript" src="http://localhost:4000/socket.io/socket.io.js"></script>
<script>
    var socket = io.connect('http://localhost:4000');
</script>

使用这种标准方法一切正常。 现在,我正在尝试基于服务器的IP在“动态”中转换此连接,如下所示:

<html>
    <head>
        var socket;
        function loadFile(filename){
            var ip_server = location.host;
            var body = document.getElementsByTagName( 'body' )[0],
                fileref = document.createElement('script');
            fileref.setAttribute("type","text/javascript");
            fileref.setAttribute("src", "http://"+ip_server+"/"+filename);
            body.appendChild( fileref ); 
        }
    </head>
    <body>
        <script type="text/javascript">
            loadFile("socket.io/socket.io.js");
            socket = io.connect('http://'+location.host);
        </script>
    </body>
</html>

但是firebug在socket = io.connect('http://'+location.host);行上说 ReferenceError:io未定义

我该如何解决?有一种简单的方法可以做我正在思考的事情吗? 感谢

2 个答案:

答案 0 :(得分:8)

Socket.io与Node.js“神奇”集成,这意味着更简单的东西会自动运行:

<script src="/socket.io/socket.io.js"></script>
var socket = io.connect();

这将找到没有显式主机或路径的库和套接字。它应该“正常工作。”

答案 1 :(得分:-1)

const socket = io.connect(location.href);