最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Socket.emit()和或socket.on()不起作用

运维笔记admin9浏览0评论

Socket.emit()和/或socket.on()不起作用

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)

  1. 暂无评论