前提・実現したいこと
Discord.jsとWebSocketを用いて、Minecraft統合版サーバのオンラインプレイヤーのリストを定期的にログ出力するDiscord Botを開発しようと考えています。
オンラインエディタのGlitchでWebSocketサーバを記述し、Minecraftの/connectコマンドでWebSocketサーバと接続することで実現します。
発生している問題・エラーメッセージ
/connectコマンドで接続を試みると"Connection closed"と表示され、Glitchのログには接続が完了した旨の出力がされません。
○コマンド(Minecraft)
Minecraft
1/connect https://"Glitchプロジェクト名".glitch.me:19132
○出力(Minecraft)
Minecraft
1Connection closed
○出力(Glitch)
Glitch
1listening on *:19132
○期待する出力(Glitch)
Glitch
1listening on *:19132 2user connected
該当のソースコード
Javascript
1const http = require("http"); 2const querystring = require("querystring"); 3const discord = require("discord.js"); 4const client = new discord.Client(); 5 6const WebSocket = require("ws"); 7const app = require("express")(); 8const server = require("http").Server(app); 9const { v4: uuidv4 } = require("uuid"); 10const util = require("util"); 11 12const wss = new WebSocket.Server({ server }); 13 14http 15 .createServer(function(req, res) { 16 if (req.method == "POST") { 17 var data = ""; 18 req.on("data", function(chunk) { 19 data += chunk; 20 }); 21 req.on("end", function() { 22 if (!data) { 23 res.end("No post data"); 24 return; 25 } 26 var dataObject = querystring.parse(data); 27 console.log("post:" + dataObject.type); 28 if (dataObject.type == "wake") { 29 console.log("Woke up in post"); 30 res.end(); 31 return; 32 } 33 res.end(); 34 }); 35 } else if (req.method == "GET") { 36 res.writeHead(200, { "Content-Type": "text/plain" }); 37 res.end("Discord Bot is active now\n"); 38 } 39 }) 40 .listen(3000); 41 42wss.on("connection", socket => { 43 console.log("user connected"); 44}); 45 46server.listen(19132, () => { 47 console.log("listening on *:19132"); 48}); 49 50if (process.env.DISCORD_BOT_TOKEN == undefined) { 51 console.log("DISCORD_BOT_TOKENが設定されていません。"); 52 process.exit(0); 53} 54 55client.login(process.env.DISCORD_BOT_TOKEN);
試したこと
接続するport番号を変えたり、複数のサイトを参考にWebSocketサーバの記述方法を変えてみましたが、変わりませんでした。
解決法をご存じでしたら、お教えいただきますよう何卒よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。