我的朋友正在制作一个 websocket 服务器,但它不工作

Posted

技术标签:

【中文标题】我的朋友正在制作一个 websocket 服务器,但它不工作【英文标题】:My friend is making a websocket server and it's not working 【发布时间】:2021-05-31 17:46:57 【问题描述】:

我的朋友为 MineCraft 制作了这个 WebSocket 服务器,但它不起作用。他暂时不会上,所以我决定来这里。有人可以帮忙吗?

// Minecraft Bedrock WebSocket Server

const webSocket = require('websocket');
const readline = require('readline');

const rl = readline.createInterface(
  input: process.stdin,
  output: process.stdout
);

const wss = new webSocket.server(port: 8000 );
try 
  console.log("Server is running on your_ip:8000");

  wss.on('connection', socket => 
    console.log("A client is opening a connection");

    const command = () => 
      return new Promise((resolve) => 
        rl.question(`Command: /`, (cmd) => 

          // log user details
          //console.log(`\nYour INPUT: /$cmd`);

          // Send command
          socket.send(JSON.stringify(
            
              "body": 
                "origin": 
                  "type": "player"
                ,
                "commandLine": `$cmd`,
                "version": 1
              ,
              "header": 
                "requestId": "00000000-0000-0000-0000-000000000000",
                "messagePurpose": "commandRequest",
                "version": 1,
                "messageType": "commandRequest"
              
            
          ));

          console.log("Command sent\n\n");

          resolve();
        );
      );
    

    async function askCommands() 
      while (true) 
        await command();
      
    
    
    // Run async function
    askCommands();

    socket.on('message', function incoming(message) 
      console.log('\nreceived: %s', message);
    );

    process.on('SIGINT', function() 
      console.log("\nInterrupt Ctrl-C");
      process.exit();
    );
  );

  wss.off;
 catch(E) 
  console.log(E);

这是 Visual Studio Code 中的错误:

Debugger attached.
Waiting for the debugger to disconnect...
c:\Users\*****\Downloads\wsserver-bedrock-master\wsserver-bedrock-master\node_modules\websocket\lib\WebSocketServer.js:150
        throw new Error('You must specify an httpServer on which to mount the WebSocket server.');
        ^

Error: You must specify an httpServer on which to mount the WebSocket server.
    at WebSocketServer.mount (c:\Users\*****\Downloads\wsserver-bedrock-master\wsserver-bedrock-master\node_modules\websocket\lib\WebSocketServer.js:150:15)
    at new WebSocketServer (c:\Users\*****\Downloads\wsserver-bedrock-master\wsserver-bedrock-master\node_modules\websocket\lib\WebSocketServer.js:36:14)
    at Object.<anonymous> (c:\Users\*****\Downloads\wsserver-bedrock-master\wsserver-bedrock-master\wsserver.js:11:13)
    at Module._compile (internal/modules/cjs/loader.js:1068:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:933:32)
    at Function.Module._load (internal/modules/cjs/loader.js:774:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47
Process exited with code 1
Uncaught Error: You must specify an httpServer on which to mount the WebSocket server.
No debugger available, can not send 'variables'

【问题讨论】:

请给minimal reproducible example。 我从来没有真正接触过 javascript/node.js,所以我只给你他的视频和他的代码的 github。 youtu.be/csvwK9LUq9sgithub.com/sidious38/wsserver-bedrock 就像错误信息说的,你需要“指定一个 httpServer 来挂载 WebSocket 服务器”。首先创建一个http 服务器,然后将其分配给WebSocket 服务器。请参阅documentation 中的示例。 【参考方案1】:

您好,您只是这样编写代码。 在客户端代码应该像 REF

而Server会是这样的 REF 2:

【讨论】:

以上是关于我的朋友正在制作一个 websocket 服务器,但它不工作的主要内容,如果未能解决你的问题,请参考以下文章

使用 c++ 服务器制作 Websocket

如何通过 websocket 优化发送绘图?

如何在 Angular 12 中制作一个简单的 rxjs/webSocket 服务?

为需要在我的网站上自动更新数据的每个页面制作许多 https websocket 服务器是不是很好?

NodeJS中的Websockets。从服务器端WebSocket客户端调用WebSocketServer

C++ WebSocket 服务器实现(接受密钥不匹配)