javascript - Socket.IO 发射不发送
问题描述
我目前正在使用 Socket.IO 和 Javascript 构建游戏。我原本想做一款实时多人游戏,但是很快就遇到了问题。我最终放弃并转向了回合制游戏,但问题仍然没有消失。
问题是服务器(app.js)没有从客户端(game.js)发出。我尝试重新创建项目console.log,并搜索谷歌无济于事。
应用程序.js
require('./Database');
var express = require('express');
var app = express();
var serv = require('http').Server(app);
app.get('/', function(req, res) {
res.sendFile(__dirname + '/client/index.html');
});
app.use('/client', express.static(__dirname + '/client'));
serv.listen(process.env.PORT || 2000);
console.log("Server started.");
var SOCKET_LIST = {};
var io = require('socket.io')(serv, {});
io.sockets.on('connection', function(socket) {
socket.id = Math.random();
SOCKET_LIST[socket.id] = socket;
socket.on('signIn', function(data) { // {username,password}
Database.isValidPassword(data, function(res) {
if (!res)
return socket.emit('signInResponse', { success: false });
Database.getPlayerProgress(data.username, function (progress) {
socket.emit('signInResponse', {
success: true, username: data.username,
progress: progress
});
})
});
});
socket.on('signUp', function(data) {
Database.isUsernameTaken(data, function(res) {
if (res) {
socket.emit('signUpResponse', { success: false });
} else {
Database.addUser(data, function() {
socket.emit('signUpResponse', { success: true });
});
}
});
});
socket.on('disconnect', function() {
delete SOCKET_LIST[socket.id];
});
socket.on("findMatch", function(data) {
console.log('test'); // ******* Not working ********
});
});
游戏.js
var socket = io("127.0.0.1:2000");
function findMatch(data) {
socket.emit("findMatch", { socket: socket });
}
FindMatch()
从大厅“查找匹配”按钮调用。它连接到一个onclick
监听器。
谢谢你。我将不胜感激任何帮助。
编辑:连接、登录、注册和断开连接发出 DO 仅适用于我稍后添加的自定义项(例如 findMatch)不起作用
解决方案
推荐阅读
- javascript - 我无法访问 react.createContext() 中的上下文功能
- css - 如何使用 css 使内容适合 div 框?
- python - 如何仅更改 repl.it 数据库中列表的一个值?
- sql - 如何使用 SQL 确定交易日期的成员资格?
- python - 将 pypy 内核安装到 jupyter notebook 时出现问题
- c++ - 在 Linux 上编译和运行 GLFW
- java - 无法在 Android 10 上运行通知
- c++ - 如果函数未能在 C++ 中内联,则不编译
- excel - 如何用另一个工作表中的查找信息替换数据工作表中的索引号?
- amazon-rds - 由于 AlwaysOn BACKUP 数据不可用,AWS DMS 任务在完成后失败并出现错误