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