2017-07-19 52 views
-2

我正在开发一个带有Node.js,express.js和Sequelize的日历应用程序。实时通知node.js

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

我需要创建socket.io通知制度,但我没有使用websockets的经验。我的疑惑是,如何让我的服务器向用户分配任务发送通知?

我的端口配置为一个名为斌/ WWW文件夹,我的快递路线上一个叫server.js

任何想法文件difined?

+1

您需要向我们提供您的现有代码,具体问题你未能解决。 – DrunkDevKek

+0

抱歉兄弟,但我什么也没有失败。这只是我如何开发一些东西的疑问。但是,任何方式,我的疑问已经回答 –

回答

1

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

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

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

而且你可以将它连接到服务器在你的bin/WWW文件

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

或者还有什么我喜欢做的事情,就是增加socket.io中间件快递

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

所以你可以在你的一些路由器文件中访问它

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

哇,这看起来很awsome!谢谢!我还没有测试过,但我相信这应该可行! –

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) 

我认为这可以帮助y欧:)

文档供应虽然可用时socket.io或本地的WebSockets

不要犹豫,问问题;)