亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何為Discord網關設置心跳功能

如何為Discord網關設置心跳功能

Cats萌萌 2022-12-02 10:39:48
這不會是解決一個問題的非常具體的問題,所以很抱歉。這是我之前詢問的有關為我的 Discord 機器人網站獲取實時服務器計數的問題的后續行動。在我看來,websocket 連接是獲取此信息的最佳方式,因為通過 discord.js 獲取此信息占用了太多內存,因為 discord.js 所做的遠遠超出了我的需要。我知道對于 websocket 連接,我需要獲取連接 URL、連接,然后進行心跳并接收心跳確認。不過,我在將這些想法轉化為代碼時遇到了很多麻煩。到目前為止,我可以請求一個 URL、連接并開始心跳,但我不知道如何 1) 在接收信息的同時保持心跳和 2) 如果連接中斷(我沒有收到確認)則停止心跳。導致我出現問題的主要原因是無法使用多個消息偵聽器。如果有人能指出正確的總體方向或解決我當前的問題,我將不勝感激。當前代碼,如果有幫助(我知道它實際上不起作用):const XMLHttpRequest = require('xmlhttprequest').XMLHttpRequestconst 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}`)    }
查看完整描述

2 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

我有一些建議。

  1. let alert在錯誤的地方。它的范圍應該在let WebSocket.

  2. 不要removeEventListener。最好有一個消息處理程序,switch (message.op)然后根據message.op(你命名的hello)的值調用其他方法。

  3. 如果你真的想removeEventListener,你不能只傳遞類型"message",你還需要傳遞對函數本身的引用。見這里和下面。

  4. 如果您需要保存第一條消息, 的值hello,那么還要將其范圍限定在文件的頂層。

  5. 當你停止心跳時,你不會說你想做什么,但你已經有了它的位置,它就是你設置的地方alive = false。你可以打電話給socket.close()那里或alert你的用戶出了什么問題。取決于您的應用程序。

const myHandler = function (data) { /* do stuff with data */ };

socket.addEventListener("message", myHandler);

socket.removeEventListener("message", myHandler);


查看完整回答
反對 回復 2022-12-02
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

我嘗試使用不同的代碼,因為我找不到另一個代碼,當我嘗試發送 3 次心跳時遇到問題連接已斷開連接已關閉:代碼 = 1000 原因 =



查看完整回答
反對 回復 2022-12-02
  • 2 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號