繁体   English   中英

如何将数据从 mysql 服务器发送到 node.js socket.io

[英]how to emit data from mysql server to node.js socket.io

所以我现在一直在碰壁,我试图从@rodrigogs/my-sql 事件节点package 中监听事件,并通过socket-io 将这些事件发送到反应客户端。

但是,在从 mysql 获取数据和将数据发送到客户端之间似乎存在断开连接。

const con = mysql.createConnection({
  host     : 'not local host',
  user     : 'user',
  password : 'pw',
  database : 'dbname',
  port:mysqlport
});
const myInstance = new MySQLEvents(con, {});
myInstance.start()
  .then(() => console.log('I\'m running!'))
  .catch(err => console.error('Something bad happened', err));

  myInstance.addTrigger({
    name: 'trigger1',
    expression: 'dbname.table',
    statement: MySQLEvents.STATEMENTS.ALL,
    onEvent: async (event) => {
      //socket socketio io .emit any variation of those doesn't work
        emitAnEvent(event);// current attempt      
      },

emitAnEvent 真的很公正,但是


function emitAnEvent(event){
   // socket is undefined, io nor socketio work.
  socketio.emit("rowUpdate",event.data)
}

我正在尝试这个 function 发送想法,因为如果我将这些块中的任何一个嵌套在彼此内部,就会发生可怕的悲伤,我不知道如何访问 scope 之外的套接字,ZF98ED07A4D5F50F7DE1410D905F14...


io.on("connection", (socket) => {
    console.log("Client connected");
    
    socket.on("hydrateReq",()=>{
      console.log("hydrate request heard");
      socket.emit("hydrate", hydrateStore());
      })

    socket.emit("handshake","connected to backend");


});

如果每次有更新时我都尝试建立新的连接......好吧,你可以猜到它的效果如何。

所以...

这两件事如何协同工作? 你如何通过 socket.io 发送 mysql 事件? 有没有最佳做法? 还是我想念的明显干净的处理方式?

我已经确认 mysql 已连接,并且 socket-io 已连接两者......而且两者似乎都工作得很好......我完全不知道如何让这些工作一起工作。



我是盲人,在码头的任何地方都找不到这个,但您可以通过服务器上的通用 io 访问发射...定义如下:

const socketio = require('socket.io');

 const io = socketio(server, {   cors: {
      origin: "*",
      methods: ["GET", "POST"],
      credentials: true
    }});



function emitAnEvent(event){
  console.log(event);//io.emit is defined and the point I was looking for...
  io.emit("rowUpdate",event)
  
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM