【问题标题】:One way web socket communication?一种方式的网络套接字通信?
【发布时间】:2016-12-08 07:37:02
【问题描述】:

我在阅读Python websocket-client library 并意识到,要接收数据,我们必须启动一个连接:

from websocket import create_connection
ws = create_connection("ws://echo.websocket.org/")
print "Received " + ws.recv() + "..."

如果我只需要单向连接怎么办?假设我的笔记本电脑上正在运行一个 Python 脚本,它会定期向本地 Web 服务器发送消息。

要接收消息,网络服务器必须启动一个连接,但启动一个连接需要一个 URL 来连接。我的 Python 脚本不是 Web 服务器,因此它缺少 URL。 Web 服务器如何从脚本接收消息?

我试图让服务器监听客户端通过它连接

ws = websocket.WebSocket()
while 1:
  print 'received "' + ws.recv()

但是,我得到一个错误。

in _recv
    bytes = self.io_sock.recv(bufsize)
error: [Errno 107] Transport endpoint is not connected

那个错误输出让我相信服务器需要连接才能接收。

【问题讨论】:

  • “要接收消息,Web 服务器必须启动一个连接” - 不,Web 服务器只需要监听客户端与它建立连接。客户端完全按照您在示例中显示的方式执行此操作。一旦他们建立了连接,您就可以通过任一方式发送消息,双向发送消息,或者根本不发送消息。
  • 谢谢,但是服务器如何使用 websockets API 来监听客户端连接,而不必连接任何东西本身呢?感谢您的编辑。 :)
  • 网络服务器如何监听 any 连接?您链接到的库明确是 client 实现。
  • 后期编辑:同样,这是一个客户端库。您还需要在您使用的任何服务器上提供 WS 支持。

标签: python sockets websocket


【解决方案1】:

如果您希望通过一种方式连接到服务器,您可以只监听普通套接字或使用 UDP 或使用 HTTP 请求或任何其他 TCP 协议。

【讨论】:

    猜你喜欢
    • 2018-07-02
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多