【发布时间】:2019-07-25 00:35:37
【问题描述】:
所以我正在使用 socket.io 尝试制作多人迷你游戏, 但是我在客户端使用的 socket.emit() 函数不起作用。 它在客户端浏览器和服务器控制台上都不会引发错误。 它只是不会发出事件。 也许是 socket.on() 服务器端没有收到它。
有一个 html 文件夹,其中包含 jquery.js、socket.io-1.2.0.js、index.html、main.js 和 style.css
这是基本代码,但最后有一个包含完整代码的粘贴箱:
客户端:
const socket = io();
socket.emit('pos', player);
socket.on('pos', (pos) => {
if (player.show = true) {
canvasCtx.fillStyle = "#7c5c5c";
canvasCtx.fillRect(player.x, player.y, playerwidth, playerheight);
canvasCtx.fillStyle = "grey";
canvasCtx.fillRect(player.x, player.y + playerheight, shadow_width,
shadow_height);
}
我有一个完美的画布和播放器字典。
服务器端:
var path = require("path");
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.use(express.static('html'))
app.get('/', function(req, res){
res.sendFile(path.resolve(__dirname + '/html/index.html'));
});
io.on('connection', function(socket){
socket.on('pos', (player) => {
io.emit('pos', player);
console.log('Received player data with values : ' + player.x + ' for x '
+ player.y + ' for y '+ player.skin + 'as a skin')
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
我使用 npm 安装 express 和 socket.io
粘贴箱: https://pastebin.com/wrzr9C76
谢谢
【问题讨论】:
标签: javascript node.js socket.io