当前位置: 首页 > 知识库问答 >
问题:

Socket.io:socket.emit不发射客户端/socket.on不接收服务器端

方德宇
2023-03-14

所以我在玩插座。io正在尝试制作一个多人迷你游戏,但是这个插座。我在客户端使用的emit()函数不起作用。它既不会在客户端浏览器上也不会在服务器控制台上抛出错误。它只是不会发出事件。也许是插座。位于()服务器端,但该服务器端未接收到它。

有一个html文件夹,包含jquery.js,socket.io-1.2.0.js,index.html,main.js和style.css

这是基本的代码,但在末尾有一个包含整个代码的pastebin:

客户端

const socket = io();
socket.emit('pos', player);

socket.on('pos', (pos) => {
  if (player.show = true) {
    canvasCtx.fillStyle = "#7c5c5c";
    canvasCtx.fillRect(player.x, player.y, playerwidth, playerheight);

    canvasCtx.fillStyle = "grey";
    canvasCtx.fillRect(player.x, player.y + playerheight, shadow_width, 
    shadow_height);
  }

我有一个完美的工作画布和球员用语。

服务器端:

var path = require("path");
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.use(express.static('html'))
app.get('/', function(req, res){
  res.sendFile(path.resolve(__dirname + '/html/index.html'));
});

io.on('connection', function(socket){
  socket.on('pos', (player) => {
    io.emit('pos', player);
    console.log('Received player data with values : ' + player.x + ' for x ' 
    + player.y + ' for y '+ player.skin + 'as a skin')
  });
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

我用npm安装了Express和socket.io

粘贴箱:https://pastebin.com/wrzr9C76

非常感谢。

共有1个答案

韦昊焜
2023-03-14

您不需要提供自己的socket.io客户端库副本。当socket.io初始化时,它将中间件添加到路径上的socket.io.js/socket.io/socket.io.js。运行应用时,可以通过访问http://localhost:3000/socket.io/socket.io.js来验证这一点。

因此,在html中,而不是

 类似资料:
  • 我正在制作一个加密聊天应用程序,在终端中,使用socket.io-client和socket.io。客户机能够连接到服务器,但在输入用户名时不发出用户名。 客户: 服务器代码,是基于socket.io聊天示例中的代码: 我添加了一个错误事件,如果与服务器的连接失败,这将关闭客户端,所以我知道它的连接,任何帮助都很感激,我已经对这个主题进行了研究,并尝试了许多其他方法,但都无济于事。 另外,连接是在

  • 我正在创建我的产品,并与这个问题。有一天,我设置了Socket.io,一切都很好。第二天,我将服务器和客户端从http迁移到HTTPS。迁移后客户端和服务器端仍然连接,但不能从客户端发射到服务器,从服务器发射到客户端。 我的ssl证书位于和中,它们加载正确。运行在上的服务器 我的示例react组件。我的react应用程序运行在上。HTTPS连接良好,工作良好。 我该怎么办?也许我在中错误地使用了s

  • 我对Android系统是新手。我有一个客户端类,我的主要活动引用。client类将客户端套接字连接到充当服务器的外部设备,但是它从不将我试图发送的消息发送到服务器。我知道这不是连接,因为在创建套接字时,我将setKeepAlive()设置为true,当我试图发送消息时不会引发异常,socket.isconnected()返回true,如果我试图在发送消息之前连接套接字,它会引发“已经连接”的异常。

  • 我有套接字服务器(java桌面应用程序)正在等待从java webapp(套接字客户端)连接。通信看起来还可以,我在客户端看到来自服务器的消息,但是当我发送消息时,我在服务器端没有收到任何消息。会有什么问题呢?当我检查服务器与telnet,一切正常。下面是我的代码: 服务器: 客户: 谢谢帮忙!

  • 我正在尝试创建一个非常基本的JavaFTP服务器。 处理传入套接字、接受它并将其转换为客户机线程的代码似乎工作得很好,但由于某些原因,当我尝试发送欢迎消息时,数据似乎没有到达客户机。 我在控制台中看到它正在运行并试图发送欢迎消息,但是FileZilla(我用来连接的FTP客户端)通常位于: === 编辑 欢迎信息非常基本:发送(“220欢迎使用FTP服务器”); 我试图只包含相关的代码,因为在这里

  • 问题内容: 我有一个带有两个服务器端进程的程序。一台服务器只是将ArrayList发送给客户端。另一个服务器首先从客户端获取一个字符串,然后找到与该ID对应的正确记录,然后将记录发回。 我在第二个服务器进程中遇到问题。请参阅下面的println语句,其中显示“卡在此处”。那就是程序挂起的地方。 客户端: 问题答案: 您需要在两端的ObjectInputStream之前创建ObjectOutputS