Socket.emit()和/或socket.on()不起作用
我正在使用node.js和socket.io制作游戏,我只想使用socket.emit()和socket.on()将变量发送到客户端。但是,这似乎不起作用,我不确定为什么。我已经制作了一个精简程序,看看我是否正确写了这个,因为我对socket.io很新。
//server
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(2000);
console.log('Server started.');
var SOCKET_LIST = {};
var PLAYER_LIST = {};
var optypes = [Math.floor(Math.random()*6), Math.floor(Math.random()*6), Math.floor(Math.random()*6), Math.floor(Math.random()*6)]
var op1 = {
x: 450,
y: 600,
type: optypes[0]
}
socket.emit('operations', op1);
<canvas id="ctx" width="900" height="1400" style="border:1px solid #000000;"></canvas>
<script src=".io-1.4.5.js"></script>
<script>
//client
var ctx = document.getElementById("ctx").getContext("2d");
ctx.font = '30px Arial';
var socket = io();
socket.on('operations', function(data) {
console.log(data);
});
</script>
回答如下:
您尚未在服务器代码中指定任何套接字io库。为了发出套接字,你必须等到建立连接。
//server
var express = require('express');
var app = express();
var serv = require('http').Server(app);
var socketio = require('socket.io')(serv);
app.get('/', function(req, res) {
res.sendFile(__dirname + '/client/index.html');
});
app.use('/client', express.static(__dirname + '/client'));
serv.listen(2000);
console.log('Server started.');
var SOCKET_LIST = {};
var PLAYER_LIST = {};
var optypes = [Math.floor(Math.random()*6), Math.floor(Math.random()*6), Math.floor(Math.random()*6), Math.floor(Math.random()*6)]
var op1 = {
x: 450,
y: 600,
type: optypes[0]
}
var connection = socketio
.on('connection', function (socket) {
socket.emit('operations', op1);
});
您还需要在客户端代码中指定要连接的服务器。如果在端口2000上运行套接字服务器,则必须指定要连接的服务器。
<canvas id="ctx" width="900" height="1400" style="border:1px solid #000000;"></canvas>
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script>
//client
var ctx = document.getElementById("ctx").getContext("2d");
ctx.font = '30px Arial';
var socket = io('http://localhost:2000');
socket.on('operations', function(data) {
console.log(data);
});
</script>
与本文相关的文章
评论列表(0)
- 暂无评论