在处理我的项目时,我无法让我的服务器退出鼠标移动,让我知道它在听。
在客户端,我可以看到鼠标移动记录到控制台,但由于某种原因,服务器根本没有接收任何鼠标移动。
任何人都可以向我解释为什么这不起作用?我是node.js的新手,这是我的第一个项目。
服务器代码:
var express = require('express');
var app = express();
var server = app.listen(3000);
app.use(express.static('public'));
var socket = require('socket.io');
var io = socket(server);
io.sockets.on('connection', newConnection);
function newConnection(socket) {
console.log('new connection: ' + socket.id);
socket.on('mouse', mouseMsg);
function mouseMsg(data) {
console.log(data);
}
}
客户代码:
var socket;
function setup() {
createCanvas(200,200);
background(51);
socket = io.connect("http://localhost:3000/sketch.html");
}
function mouseDragged() {
console.log('Sending: ' + mouseX + ' , ' + mouseY);
var data = {
x: mouseX,
y: mouseY
}
socket.emit('mouse', data);
noStroke();
fill(255);
ellipse(mouseX, mouseY, 15, 15);
}
答案 0 :(得分:2)
问题是:/sketch.html
,如果删除它,它将起作用:
socket = io.connect("http://localhost:3000");
/sketch.html
是一个名称空间,因此在连接到http://localhost:3000/sketch.html
时,您应该监听该特定名称空间上的事件。
const nsp = io.of('/sketch.html');
nsp.on('connection', socket => {
console.log('connected to namespace');
socket.on('mouse', data => console.log(data));
});
您可以在here中了解有关socket.io
命名空间的更多信息: