实时通知node.js

时间:2017-07-19 11:49:20

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

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

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

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

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

任何想法?

2 个答案:

答案 0 :(得分:3)

我想向您介绍准备使用后端系统,使您能够轻松构建具有很酷功能的现代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提供时可用

不要犹豫提问;)

答案 1 :(得分:1)

据我所知,您需要将socket.io实例传递给其他文件,对吗?

<key>UIBackgroundModes</key>
<array>
    <string>location</string>
</array>

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

即可
DidUpdateLocations

或者我还想做什么,就是为express

添加socket.io中间件
var sio = require('socket.io');

var io = sio();
app.io = io;

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

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