【发布时间】: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 支持。