【发布时间】:2021-03-20 00:50:57
【问题描述】:
所以我现在已经把头撞到墙上了,我试图从 @rodrigogs/my-sql 事件节点包中监听事件,并通过 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)
}
我正在尝试这个函数发送想法,因为如果我将这些块中的任何一个嵌套在一起,就会发生可怕的悲伤,我不确定如何访问 io.on('conneciton'...
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 已连接两者......而且两者似乎都工作得很好......我完全不知道如何让它们一起工作。
【问题讨论】:
标签: javascript mysql node.js socket.io mysql-event