NodeJS Websocket在HTML中使用变量(带快递?)

时间:2017-01-13 22:25:41

标签: javascript node.js express websocket

我一直在寻找两天寻找可能对我有用的解决方案。遗憾的是,我只看到了如何设置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。如果你认为我会更好地使用另一个websocket脚本,比如Socket.io--我一直在看着它们,并且没有太多明智的事情。

1 个答案:

答案 0 :(得分:0)

你有很多选择。可能最简单的方法是导出连接。在文件的底部,例如module.exports = connection

然后在快递申请中,导入连接,例如const connection = require('./path/connection');

然后创建一个以给定间隔调用自身的函数并发送相应的消息。

然后在Express应用程序中,您可以使用connection.on(' message',(data,flags)=> // do stuff);

您的另一个选择是创建商店对象。 E.g。

// ./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 ...

// ./express.js

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

store.get // all of your stuff;