【问题标题】:How to serve several Web Socket如何服务多个 Web Socket
【发布时间】:2010-12-01 18:37:01
【问题描述】:

我有 30 个智能传感器分布在几个可以访问 Internet 的专用网络中(全部)。我必须在这些传感器和具有公共 IP 的服务器之间建立持久连接(套接字)。

用户可以通过网站 (Django) 访问每个传感器并发送或获取数据。

从您的角度来看,如何确保多个持久和私有连接?我找到了https://github.com/gregmuellegger/django-websocket,但我认为不适合我的应用程序,因为我无法从其他 Django 视图中恢复现有的套接字连接。

任何建议都非常受欢迎。

我发现了一种在服务器中使用带有 JSON-RPC 的 Twisted Perspective Broker 的好方法,它提供了支持每个智能传感器的方法,而另一方面,每个传感器将使用 JSON 库来进行身份验证(基本)和发送数据。

你怎么看?这是一个好的解决方案吗?我会在测试后立即发布结果。

【问题讨论】:

    标签: django websocket


    【解决方案1】:

    设置一个单独的服务器来保持持久连接,并允许 django 应用程序查询它。 Twisted 可以为编写简单的、单一用途的服务器提供一个很好的框架,并且有一个很好的关于如何编写 XML-RPC 服务器的教程here。 Python 对 XML-RPC 有很好的支持,应该很容易启动和运行它。

    【讨论】:

    • 谢谢你的建议,我去看看
    • 这很有用,但对这个porpuse没有用,因为 xmlrpm 只能从正在执行 linux box、python 和 twisted 模块的客户端执行远程方法,在这种情况下,每个智能电表都可以只请求 URL 或打开一个简单的套接字。我发现的困难是拥有一个已经连接到服务器的侦听器列表,并处理从每个套接字流向服务器的信息,并将其与 django 服务器中的已知实体相关联并保存新的传入数据。
    • 此外,我听说 Twisted 是单线程的,如果多个传感器同时向服务器发布数据,这当然会导致整个服务器阻塞
    • 或者您可以使用单独的线程来控制数据,并使用主线程来运行 Twisted 服务器。使用twisted 进行多线程处理比使用django 之类的复杂框架要容易得多。或者,您可以只运行非阻塞的套接字...
    • 我会研究twisted,如果我实现一个JSON-RPC服务器似乎会很有用,这样我就可以从每个智能传感器构造json/javascript mime请求并使用合适的方式处理数据服务器中的一些方法(基于扭曲)。但我仍在寻找一种可扩展的方式将数据(如私人消息)从服务器发送到智能电表(套接字处理?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    相关资源
    最近更新 更多