我正在尝试制作一个网络应用程序,用户可以在其中互相玩环形国际象棋。这是我的 app.js,在服务器上:
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var port = process.env.PORT || 8000;
app.use(express.static('public'));
app.get('/', function(req, res) {
res.sendFile(__dirname + '/public/index.html');
console.log("Got request for homepage");
});
io.on('connection', function(socket){
console.log('A client has connected to the server');
socket.on('move', function(moveString){
console.log("Move made: " + moveString);
});
socket.on('disconnect', function(){
console.log('A client has disconnected from the server');
});
});
http.listen(port, function() {
console.log('listening on *: ' + port);
});
公共目录包含像index.html这样的文件,其中包含棋盘,以及一些控制棋盘并只允许合法移动的javascript和CSS文件。 board.js 是这个的主文件。
在客户端,我的 index.html 文件包含以下行:
<script src="js/board.js"></script>
我的 board.js 文件包含以下行:
var socket = io();
而且在移动验证功能中,每当进行有效移动时,我都会有一行
socket.emit('move', moveString);
但是,每当我从终端运行 Node app.js,然后在 Web 浏览器中访问 localhost:8000 时,终端会每秒多次重复显示“客户端已连接到服务器”,如下所示:
终端截图 https://i.stack.imgur.com/IGaJx.png
另外,每当我从浏览器进行移动或移动到另一个页面时,服务器似乎不会注册这些事件(它不会记录“客户端已与服务器断开连接”,也不会记录移动已发生)已制作)。我究竟做错了什么?