6

我刚刚开始编写服务器端 javascript,并且一直在阅读有关 socket.io 和 node.js 的教程,但我没有遇到任何演示如何使用 node.js 访问 mysql 数据库的内容。

比如说我想创建一个方法来监听我在 mysql.something.com 上的数据库中的一个表(使用数据库:数据库,用户名:用户名等),我将如何使用 node.js 连接到 socket.io该数据库并侦听该表的新输入,然后返回该输入?

我想知道是否有人可以给我一个使用发布订阅模型的具体示例。

谢谢您的帮助。

4

3 回答 3

2

您必须定期轮询 mysql 数据库以获取更改,并在检测到更改时发出 socket.io 事件。这是一个伪代码

var mysql = require('mysql');
var connect = mysql.createConnection({
      host: 'localhost'
    , database: 'your_database'
    , username: 'user'
    , password: 'password'});

var initial_result;

// check for changes after 1 second

setTimeout(function(){

    connect.query('select * from your_table', function(err, result) {
        if(err) { throw new Error('Failed');}
        initial_result = initial_result || result;

        if(Changed(initial_result, result)) { socket.emit('changed', result); }

    });

    function Changed(pre, now) {
  // return true if pre != now
    }


}, 1000); 
于 2013-07-12T16:12:07.903 回答
0

如果你已经解决了你的问题,我不知道,但昨天我也遇到了这个问题。我想看一个 node.js、socket.io 和 mysql 的例子。所以我在 youtube 上搜索了很多,只找到了这个.. https://www.youtube.com/watch?v=Pw_AhwvxU58

我希望我能以某种方式帮助你。

于 2021-05-08T10:50:23.677 回答
0

我想知道这是否可以通过处理用户登录来实现?我正在尝试创建一个聊天室,用户可以在其中注册并登录,然后开始聊天。我在拉取用户名以通过套接字聊天系统时遇到问题。

> `  passport.use(new JWTStrategy({
  jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
  secretOrKey: process.env.SECRET
}
  , async function ({ id }, cb) {
    try {
      const user = await User.findOne({ where: { id }, include: [Post] } )
      cb(null, user)
      socket.emit('username', user.User.username)
    } catch (err) {
      cb(err, null)
    }
  }))`

这只是我在阅读了你们上面发布的内容后发出用户名的糟糕尝试。我不确定这是否可行,但我想知道从这个异步函数中提取 user.User.username 并将其发送到套接字是否允许我在聊天中使用用户名。

于 2022-01-05T17:10:45.673 回答