2015-12-28 2 views
1

Я пытаюсь передать текст между передним и задним концом. Мой node.js код выглядит следующим образом:socket.io - socket.send не сообщает сообщение

var express = require('express'); 
var app = express(); 
var io = require('socket.io').listen(8081); 

app.use(express.static('public')); 

var server = app.listen(3000, function() { 
    var port = server.address().port; 
    console.log('Example app listening at', port); 

    io.sockets.on('message', function (message) { 
    console.log(message); 
    }); 

}); 

Разметка:

<html> 
<body> 
    <script type="text/javascript" src="https://cdn.socket.io/socket.io-1.3.7.js"></script> 
    <script type="text/javascript"> 
      var socket = io.connect('http://localhost:8081'); 
      socket.on('connection', function (socket) { 
      socket.send('hi'); 
      }); 
    </script> 
</body> 
</html> 

Я довольно новыми для Socket.io и socket.send('hi') должны быть console.log ИНГ hi к консоли узла. Есть ли что-то, что мне не хватает (да, IP-адрес прав)? Ошибок консоли JS нет.

+1

Вместо того чтобы использовать 'socket.send ('привет')' 'попробовать socket.emit ('привет')' –

ответ

2

Я не думаю, что вы можете использовать io.sockets.on - вы можете использовать его только для .emit для подключения разъемов.

Кроме того, для внешнего интерфейса событие, когда разъем подключается, составляет connect. connection - это событие на стороне сервера, когда создается новое соединение.

И наконец, socket не передается в качестве аргумента для события на интерфейсе.

// server 
io.on('connection', socket => socket.on('message', msg => console.log(msg))); 

// client 
socket.on('connect',() => socket.send('hi')); 
+0

Получение ошибки на '=>' стороне сервера. –

+1

@SkylerSpaeth вы можете использовать версию узла старше, чем 4; просто замените его на стандартный синтаксис 'function': https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions –

+0

Я смущен об изменении' => 'функций. Я бы предположил 'socket => socket.on (// здесь другой материал);' такой же, как 'function (socket) {socket.on (здесь другой материал)};'. Но это не работает. –

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