簡體   English   中英

HTML中的NodeJS Websocket使用變量(帶有express?)

[英]NodeJS Websocket use variable in HTML (with express?)

我一直在搜索兩天,以尋找可能適合我的解決方案。 可悲的是,我僅看到了有關如何設置websocket服務器(將消息來回發送到客戶端)和websocket客戶端(駐留在瀏覽器中)的示例和指南。 這些都不對我真正有用,我不確定如何在這里實現我想要的。

基本上我有以下websocket:

require('dotenv').config()

const WebSocket = require('ws');

var connection = new WebSocket('ws://XXX');

connection.onopen = function () {
  connection.send(JSON.stringify({"authenticate":process.env.API}));
  connection.send(JSON.stringify({"XXX":"YYY"}));
  connection.send(JSON.stringify({
    "db" : "unique_id", 
    "query" : { 
        "table" : "users"
    } 
}));  
};
connection.onerror = function (error) {
  console.log('WebSocket Error ' + error);
};

connection.onmessage = function (e) {
  console.log('Server: ' + e.data);
  var myResponse = JSON.parse(e.data);
  var qList = myResponse.results;
};

我想要做的是運行我的nodeJS腳本,例如帶有html頁面的快速腳本,其中還包括onmessage的響應。 為什么我使此復雜而不是僅使用websocket客戶端,是因為我無法公開發送身份驗證代碼。

希望我已經足夠清楚,如果您不確定我的問題,請告訴我!

PS。 如果您認為我最好使用Socket.io等其他websocket腳本-我一直在研究它們,可悲的是,我並沒有變得更加明智。

您有很多選擇。 可能最簡單的方法是導出連接。 在文件的底部,例如module.exports = connection

然后在快速應用程序中,導入連接,例如const connection = require('./path/connection');

然后,創建一個以給定間隔調用自身並發送適當消息的函數。

然后在Express應用程序中,您可以使用諸如connection.on('message',(data,flags)=> //做事)之類的東西。

您的另一個選擇是創建一個存儲對象。 例如

// ./store.js

class store  {
  constructor() {
    this.wsMaterial = {};
  }

 add(wsInfo) {
    this.wsMaterial[key] = wsInfo

 }

 get store() {
   return this.wsMaterial
 }
}

module.exports = new store()

然后導入商店並對其進行更新,例如

// ./websocket file

const store = require('./store');

...

connection.onmessage = function (e) {
  console.log('Server: ' + e.data);
  var myResponse = JSON.parse(e.data);
  var qList = myResponse.results;
  store.add(qList)
};

然后從快遞...

// ./express.js

const store = require('./store');

store.get // all of your stuff;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM