服务器无法接收客户端的鼠标移动数据

时间:2018-06-13 00:41:15

标签: node.js socket.io

在处理我的项目时,我无法让我的服务器退出鼠标移动,让我知道它在听。

在客户端,我可以看到鼠标移动记录到控制台,但由于某种原因,服务器根本没有接收任何鼠标移动。

任何人都可以向我解释为什么这不起作用?我是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);
}

1 个答案:

答案 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命名空间的更多信息: