这不会是解决一个问题的非常具体的问题,所以很抱歉。这是我之前询问的有关为我的 Discord 机器人网站获取实时服务器计数的问题的后续行动。在我看来,websocket 连接是获取此信息的最佳方式,因为通过 discord.js 获取此信息占用了太多内存,因为 discord.js 所做的远远超出了我的需要。
我知道对于 websocket 连接,我需要获取连接 URL、连接,然后进行心跳并接收心跳确认。不过,我在将这些想法转化为代码时遇到了很多麻烦。到目前为止,我可以请求一个 URL、连接并开始心跳,但我不知道如何 1) 在接收信息的同时保持心跳和 2) 如果连接中断(我没有收到确认)则停止心跳。导致我出现问题的主要原因是无法使用多个消息侦听器。如果有人能指出正确的总体方向或解决我当前的问题,我将不胜感激。
当前代码,如果有帮助(我知道它实际上不起作用):
const XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest
const WebSocket = require('ws')
let xhr = new XMLHttpRequest()
xhr.onload = (req, res) => {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText)
main(JSON.parse(xhr.responseText))
} else {
console.error(`ReadyState: ${xhr.readyState} Status: ${xhr.status}`)
}
}
xhr.open("GET", 'https://discord.com/api/gateway/bot', false)
xhr.setRequestHeader("Authorization", "MY_BOT_TOKEN_THIS_IS_A_PLACEHOLDER_DONT_TELL_ME_ITS_WRONG_IN_COMMENTS")
xhr.send()
function main(response) {
let socket = new WebSocket(`${response.url}/?v=6&encoding=json`)
var hello
socket.onopen = (event) => {
console.log("Connection established")
}
socket.onclose = (event) => {
console.log(`Connection closed: code=${event.code} reason=${event.reason}`)
}
慕桂英4014372
守着一只汪
相关分类