2013-04-11 56 views
1

我试图通过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> 

但萤火说的ReferenceError:IO不就行了socket = io.connect('http://'+location.host);定义

我该如何解决?有一种简单的方法可以做我在想什么? 感谢

+0

你究竟想在这里完成什么?我有点理解你在做什么,但不是你为什么这样做。 – 2013-04-11 11:59:55

+0

应用程序应该可以在本地或LAN或Internet上运行。 如果连接指向本地主机,当我尝试从另一台计算机连接时,应用程序无法启动......我错了吗? – 2013-04-11 12:06:54

+0

你有点不对,但有一个好方法。 :)看到我的答案。 – 2013-04-11 12:16:53

回答

6

Socket.io与Node.js的“神奇”的整合,这意味着一些简单得多将自动工作:

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

这将找到库,并没有明确的主机或路径插座。它应该“只是工作”。

+1

我爱魔术:) 谢谢 – 2013-04-11 12:58:24