1

我正在尝试通过 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>

但是萤火虫说ReferenceError: io is not defined on line socket = io.connect('http://'+location.host);

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

4

2 回答 2

8

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

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

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

于 2013-04-11T12:16:21.183 回答
-1
const socket = io.connect(location.href);
于 2018-10-04T10:11:36.670 回答