django服务器消息推送,如何将通知从服务器(django)推送到客户端(socketio)?...

我的用例是: 我有一个产品价格的数据库。很多用户正在浏览我的网站。其中一些正在查看产品X. 在服务器端,管理员可以编辑产品的价格。如果他编辑X的价格,所有客户必须看到X价格变化的通知(e.x:简单的js警报)。

我的客户现在的javascript:

var socket = io.connect('/product');

#notify server that this client is viewing product X

socket.emit("join", current_product.id);

#upon receive msg from server

socket.on('notification', function (data) {

alert("Price change");

});

我的服务器代码(socket.py):

@namespace('/products')

class ProductsNamespace(BaseNamespace, ProductSubscriberMixin):

def initialize(self, *args, **kwargs):

_connections[id(self)] = self

super(ProductsNamespace, self).initialize(*args, **kwargs)

def disconnect(self, *args, **kwargs):

del _connections[id(self)]

super(ProductsNamespace, self).disconnect(*args, **kwargs)

def on_join(self, *args):

print "joining"

def emit_to_subscribers(self): pass

我使用runserver_socketio.py在本link。 (感谢Calvin Cheng为这个优秀的最新例子。)

我不知道如何调用emit_to_subscribers。由于我没有名称空间的实例。 当我从这个doc,只读当一些数据包到达时问命名空间

命名空间创建。

但是我怎样才能从代码发送数据包到该命名空间?如果我只能在客户端向服务器发送消息时创建实例,当没有人正在浏览网站时,在完成编辑价格后,系统将会失败。

我对命名空间及其实例非常困惑。如果你有更清晰的文档,请帮助我。

非常感谢!

+0

我对此有一个肮脏的解决方法。仍然使用_connections字典来跟踪当前的连接。然后使用_connections.items()[0] [1] .emit_to_subscribers()。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值