- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Node js 和 socket.io 开发一款多人国际象棋游戏。当我在 localhost:8080 上运行游戏时,游戏在 index.html 文件中显示良好,并且在服务器上运行良好。然而,即使我做的一切都是正确的,国际象棋的走法也不会提交给其他玩家。少了什么东西?我已经正确安装了 socket.io
我尝试一遍又一遍地重新观看 YouTube 上的教程来发现我的错误,但我做不到。我相应地做了一切。我肯定错过了什么。这是链接https://www.youtube.com/watch?v=Isfqigjo7fQ&t=1621s
编辑
这里是构建多人国际象棋游戏教程的链接 http://dwcares.com/2015/10/21/realchess/
<!DOCTYPE html>
<html>
<head>
<title>Chess</title>
<link rel="stylesheet" href="chessboard-0.3.0.min.css">
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="chessboard-0.3.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chess.js/0.10.2/chess.js"></script>
<script src ="lib/socket.io-1.2.0.js"></script>
</head>
<body>
<div id="board" style="width: 400px"></div>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
var board = ChessBoard('board', 'start');
var board,
game = new Chess();
var removeGreySquares = function() {
$('#board .square-55d63').css('background', '');
};
var greySquare = function(square) {
var squareEl = $('#board .square-' + square);
var background = '#a9a9a9';
if (squareEl.hasClass('black-3c85d') === true) {
background = '#696969';
}
squareEl.css('background', background);
};
var onDragStart = function(source, piece) {
// do not pick up pieces if the game is over
// or if it's not that side's turn
if (game.game_over() === true ||
(game.turn() === 'w' && piece.search(/^b/) !== -1) ||
(game.turn() === 'b' && piece.search(/^w/) !== -1)) {
return false;
}
};
var onDrop = function(source, target) {
removeGreySquares();
// see if the move is legal
var move = game.move({
from: source,
to: target,
promotion: 'q' // NOTE: always promote to a queen for example simplicity
});
// illegal move
if (move === null) return 'snapback';
};
var onMouseoverSquare = function(square, piece) {
// get list of possible moves for this square
var moves = game.moves({
square: square,
verbose: true
});
// exit if there are no moves available for this square
if (moves.length === 0) return;
// highlight the square they moused over
greySquare(square);
// highlight the possible squares for this piece
for (var i = 0; i < moves.length; i++) {
greySquare(moves[i].to);
}
};
var onMouseoutSquare = function(square, piece) {
removeGreySquares();
};
var onSnapEnd = function() {
board.position(game.fen());
};
var cfg = {
draggable: true,
position: 'start',
onDragStart: onDragStart,
onDrop: onDrop,
onMouseoutSquare: onMouseoutSquare,
onMouseoverSquare: onMouseoverSquare,
onSnapEnd: onSnapEnd
};
board = ChessBoard('board', cfg);
var socket = io();
msgButton.onclick = function(e) {
socket.emit("message", "hello boi");
}
var handleMove = function(source, target) {
var move = game.move({from: source, to: target});
if (move === null) return "snapback";
else socket.emit("move", move);
};
socket.on("move", function(msg) {
game.move(msg);
board.position(game.fen());
});
</script>
</body>
</html>
下面是我的服务器文件
var express = require('express');
var app = express();
app.use(express.static("[ublic]"));
var http = require("http").Server(app);
var path = require('path');
var public = path.join(__dirname, 'public');
var io = require("socket.io")(http);
// viewed at http://localhost:8080
app.get('/', function(req, res) {
res.sendFile(path.join(public, 'index.html'));
});
io.on('connection', function(socket){
console.log('a user has connected');
socket.on("message", function(msg) {
console.log("Message from client: "+ msg);
});
socket.on("move", function(msg) {
socket.broadcast.emit("move", msg);
});
socket.on('disconnect', function(){
console.log('a user disconnected');
});
});
http.listen(8080, function(){
console.log('listening on *:8080');
});
app.use('/', express.static(public));
我需要的是国际象棋游戏能够正常运行,并且在 2 个玩家之间正确提交棋步
最佳答案
var socket = io.connect('http://localhost:8080');
您的服务器正在 8080 上运行,但您正在尝试连接:80。这应该可以解决问题。
关于javascript - 我正在使用 socket.io 但客户端和服务器之间没有通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55654004/
我有一个加号/减号按钮,希望用户不能选择超过 20 个但不知道如何让它工作。我尝试使用 min="1"max="5 属性,但它们不起作用。这是我的代码和一个 fiddle 链接。https://jsf
我正在尝试复制顶部底部图,如示例 here但它没有正确渲染(紫色系列有 +ve 和 -ve 值,绿色为负值)留下杂乱的人工制品。我也在努力创建一个玩具示例来复制这个问题,所以我希望尽管我缺乏数据,但有
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 6 年前。 社区去年审查了是
这个问题在这里已经有了答案: Adding two positive integers gives negative answer.Why? (4 个答案) 关闭 5 年前。 我遇到了一个奇怪的问题
有谁知道如何将字符串值类型 -4,5 或 5,4 转换为 double -4.5 或 5.4? 最佳答案 只需使用 Double.parseDouble(Locale, String); 糟糕,我很困
我正在尝试根据 TextBlob 分类插入一个仅包含“正”或“负”字符串的新数据框列:对于我的 df 的第一行,结果是 ( pos , 0.75, 0.2499999999999997)我想要' 正
我对 VBA 非常陌生,无法理解如何在一个循环中完成 2 个任务。我非常感谢您的帮助。 我已经能够根据第 3 列中的数据更改第 2 列中的数值,但我不明白如何将负值的字体更改为红色。 表格的大小每月都
欢迎, 我正在使用 jquery 通过 POST 发送表单。 这就是我获得值(value)的方式。 var mytext = $("#textareaid").val(); var dataStrin
double d = 0; // random decimal value with it's integral part within the range of Int32 and always p
我有这个字符串: var a='abc123#xyz123'; 我想构建 2 个正则表达式替换函数: 1) 用 '*' 替换所有确实有 future '#'的字符(不包括'#') 所以结果应该是这样的
我正在使用 DialogFragment。当用户从 Gmail 平板电脑应用程序的屏幕与下面示例图片中的编辑文本进行交互时,我希望正面和负面按钮保持在键盘上方。 在我的尝试中不起作用,这是我的 Dia
从组装艺术一书中,我复制了这句话: In the two’s complement system, the H.O. bit of a number is a sign bit. If the H.O
是否有更好更优雅的方法来实现下面的简单代码(diffYear、A 和 B 是数字): diffYear = yearA - yearB; if (diffYear == 0) { A = B
我正在设计一种语言,并尝试确定 true 应该是 0x01 还是 0xFF。显然,所有非零值都将转换为 true,但我正在尝试确定确切的内部表示。 每种选择的优点和缺点是什么? 最佳答案 没关系,只要
在我的 dialogfragment 类的 OnCreateDialog 中,我正在这样做: AlertDialog.Builder builder = new AlertDialog.Builder
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda usin
我偶然发现了一个奇怪的 NSDecimalNumber 行为:对于某些值,调用 integerValue、longValue、longLongValue 等,返回意想不到的值(value)。示例: l
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda using
我有这个正则表达式来测试用户输入是否有效: value.length === 0 || value === '-' || (!isNaN(parseFloat(value)) && /^-?\d+\.
我想用高斯混合模型拟合数据集,数据集包含大约 120k 个样本,每个样本有大约 130 个维度。当我使用 matlab 执行此操作时,我运行脚本(簇号为 1000): gm = fitgmdist(d
我是一名优秀的程序员,十分优秀!