【问题标题】:Real time notifications node.js实时通知 node.js
【发布时间】:2017-07-19 11:49:19
【问题描述】:

我正在使用 Node.js、express.js 和 Sequelize 开发日历应用程序。

应用程序很简单,您可以在日历中创建任务,但您也可以将一些任务分配给系统的其他用户

我需要使用 socket.io 创建一个通知系统,但我没有使用 websockets 的经验。我最大的疑问是如何让我的服务器向您分配任务的用户发送通知?

我的端口配置位于名为 bin/www 的文件夹中,我的快速路由定义在名为 server.js 的文件中

有什么想法吗?

【问题讨论】:

  • 您需要向我们提供您现有的代码,以及您未能解决的具体问题。
  • 对不起兄弟,但我没有失败任何事情。这只是对我如何开发某些东西的怀疑。但无论如何,谢谢,我的疑问已经得到解答

标签: javascript node.js websocket socket.io sequelize.js


【解决方案1】:

我想向您介绍即用型后端系统,它使您能够轻松构建具有酷炫功能的现代 Web 应用程序:

  • 持久化数据:存储您的数据并对其执行高级搜索。
  • 实时通知:订阅细粒度的数据子集。
  • 用户管理:登录、注销和安全规则不再是负担。

有了这个,您可以专注于您的主要应用程序开发。

您可以查看Kuzzle,这是我正在进行的一个项目:

首先,启动服务: http://docs.kuzzle.io/guide/getting-started/#running-kuzzle-automagically

然后在您的日历应用程序中,您可以使用 javascript sdk

此时你可以创建一个文档:

const 
  Kuzzle = require('kuzzle-sdk'),
  kuzzle = new Kuzzle('http://localhost:7512');


const filter = {
    equals: {
        user: 'username'
    }
}


// Subscribe every changes in calendar collection containing a field `user` equals to `username`
kuzzle
    .collection('calendar', 'myproject')
    .subscribe(filter, function(error, result) {
        // triggered each time a document is updated/created !
        // Here you can display a message in your application for instance
        console.log('message received from kuzzle:', result)
    })


// Each time you have to create a new task in your calendar, you can create a document that represent your task and persist it with kuzzle
const task = {
    date: '2017-07-19T16:07:21.520Z',
    title: 'my new task',
    user: 'username'
}

// Creating a document from another app will notify all subscribers
kuzzle
    .collection('calendar', 'myproject')
    .createDocument(task)

我认为这可以帮助你:)

通过 socket.io 或本地 websockets 提供文档(如果可用)

不要犹豫,问问题;)

【讨论】:

    【解决方案2】:

    据我了解,您需要将您的 socket.io 实例传递给其他文件,对吧?

    var sio = require('socket.io');
    
    var io = sio();
    app.io = io;
    

    您只需将它附加到您的 bin/www 文件中的服务器

    var io = app.io
    io.attach(server);
    

    或者我还喜欢做什么,就是为 express 添加 socket.io 中间件

    // Socket.io middleware
    app.use((req, res, next) => {
        req.io = io;
        next();
    });
    

    因此您可以在某些路由器文件中访问它

    req.io.emit('newMsg', {
        success: true
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 2018-12-12
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      相关资源
      最近更新 更多