Max*_*s S 4 javascript django push-notification websocket node.js
作为一名 Web 开发人员,我在 Redis 或 Pusher 等第三方服务的帮助下开发了聊天服务和其他一些实时协作服务。它们提供了简单的 API,我可以使用发布/订阅模型通过网络服务器实现双向通信。我现在想在不使用任何第三方服务的情况下实现一个简单的推送通知,但我不太确定如何实现这一点。情况如下:
我的问题:
我非常感谢任何帮助!
WebSockets 正是您在这里想要的。然而,它们是(相对)最近添加到浏览器的,因此,支持并不普遍。网络套接字支持
websocket 模型允许您使用 Web 浏览器将服务器的套接字连接到客户端,然后从服务器发送消息并在客户端异步接收它们,反之亦然。
因为 Node.js 是 Javascript 并且你很有可能用 Javascript 编写客户端,所以它适合作为编写耦合组件的明智选择,例如在这种情况下。
最流行的 WebSocket 库是Socket.io,它是为与 Node.js 一起使用而构建的。使用 Socket.io,您的通知模型将如下所示:
服务器
io.sockets.on('connection', function (socket) {
socket.emit('notification', { name: 'Notification', message: 'It\'s here');
});
Run Code Online (Sandbox Code Playgroud)
客户
var notifications = document.getElementById('nlist');
socket.on('notification', function(notification) {
var div;
// make some DOM changes
document.title = notification.name;
div = document.createElement('div');
div.innerHTML = notification.message;
notifications.appendChild(div);
socket.emit('received-notification');
});
Run Code Online (Sandbox Code Playgroud)
Socket.io 允许您使用自定义事件名称,如下所示,这使得设计通信 API 变得更容易一些。在用户没有 Web 套接字的情况下,它还具有 XHR 长轮询和 Flash 套接字的回退。
在这种情况下,Node 会比 Django 更快,但如果这是您第一次尝试使用 Node,您可能会发现在 Django 中您的代码库更易于管理。设计一个具有一系列像这样的回调的应用程序可能有点困难。我从未在 Django 中使用过 WebSockets,但我在 Tornado 和 WebSockets 方面的经验很差。
| 归档时间: |
|
| 查看次数: |
1371 次 |
| 最近记录: |