2013-04-11 4 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: ИО не определен на линии socket = io.connect('http://'+location.host);.

Как я могу решить? Есть простой способ сделать то, что я думаю? Благодаря

+0

Что вы на самом деле пытаетесь сделать здесь? Я понимаю, что вы делаете, но не почему вы это делаете. –

+0

Приложение должно работать как в локальной, так и в локальной сети или через Интернет. Если ссылка указывает на localhost, когда я пытаюсь подключиться с другого компьютера, приложение не запустится ... Я не прав? –

+0

Вы немного ошибаетесь, но в хорошем смысле. :) См. Мой ответ. –

ответ

6

Socket.io имеет «волшебную» интеграцию с Node.js, что означает, что что-то гораздо проще будет работать в автоматическом режиме:

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

Найдет библиотеку и сокет без каких-либо явных или путей. Он должен «просто работать».

+1

Я люблю магию :) Спасибо –

Смежные вопросы