2014-02-17 3 views
0

Я пытаюсь поиграть с сокетами. Я создал веб-сервер в узле:Узел JS, сообщающий через розетки

var http = require("http"); 
var server = http.createServer(function(req,res){ 
console.log("server has been created"); 
res.writeHead(200,{"Content-type:": "text/plain"}); 
res.end("Welcome to my supa' nodejs app"); 

}).listen(1337); 

console.log("Server running at 127.0.0.1:1337"); 



var io = require("socket.io").listen(server); 
io.sockets.on("connection", function(socket){ 
    socket.on("input_written",function(){ 
     console.log("someone clicked the button"); 
    }); 


}); 

У меня также есть HTML-файл:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> 
<html lang="en"> 
    <head> 
     <title>Home page</title> 


    </head> 
    <body> 
     <script src="/socket.io/socket.io.js"></script> 
     <script> 
        var socket = io.connect("http://localhost:1337"); 
      function clickedButton() 
      { 


      socket.on("connect",function(){ 
       socket.emit("input_written"); 
      }); 


      } 
     </script> 
     <button type="button" onclick="clickedButton()">Click me</button> 


    </body> 

</html> 

То, что я пытаюсь добиться, когда я нажимаю кнопку, что мои журналы консоли «кто-то нажал на кнопку ». Однако на данный момент ничего не происходит. Я не уверен, что я пропускаю

UPDATE Как @Zub рекомендовал я добавил

console.log("clicked"); 

прямо перед socket.emit(); Я проверил консоль и это выход:

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost/socket.io/socket.io.js 
Uncaught ReferenceError: io is not defined (index):11 
Uncaught TypeError: Cannot call method 'on' of undefined 
+0

Я бы рекомендовал инициализировать соединение клиента io за пределами функции 'clickedButton', потому что вы, конечно же, не хотите устанавливать новое соединение при каждом нажатии кнопки. Также попробуйте написать 'console.log ('clicked');' прямо перед 'socket.emit (" input_written ");'. Выключает ли консоль консоли «нажатие» при нажатии кнопки? – Curious

+0

@Zub проверить обновления – Bula

+0

вы должны удалить 'socket.on (" connect "...' form, которая также работает. Оставьте только 'socket.emit (" input_written ");' иначе он не будет работать – Curious

ответ

1

Поскольку вы связываете сервер узла с 1337, вы должны указать этот порт при загрузке сценария socket.io.js.

Так попробуйте заменить

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

с

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

Edit

Вы также должны инициализировать клиент socket.io связи за clickedButton функции и оставить только socket.emit("input_written"); в нем.

0

URL-адрес в вашем браузере должен соответствовать URL-соединения сокета. У вас есть localhost в вашем io.connect, поэтому убедитесь, что в вашем браузере URL-адрес читается http://localhost/. Если вы подключитесь к http://127.0.0.1/ в своем браузере, это не сработает.

+0

Мой браузер направлен в сторону localhost, и он не регистрируется «нажата кнопка», – Bula

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