socket.io - socket.send没有传递消息

时间:2015-12-28 04:35:54

标签: node.js sockets socket.io

我正在尝试在前端和后端之间传递文本。 我的node.js代码如下所示:

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到节点控制台。 有什么我想念的(是的,知识产权是对的)? 没有JS控制台错误。

1 个答案:

答案 0 :(得分:2)

我认为您无法使用io.sockets.on - 您只能将其用于.emit连接的套接字。

此外,对于前端,套接字连接的事件是connectconnection是创建新连接时的服务器端事件。

最后,socket也不作为参数传递给前端事件。

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

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