[英]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.