我正在尝试在前端和后端之间传递文本。
我的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控制台错误。
答案 0 :(得分: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'));