标签: ws4py

使用Flask和WebSocket-for-Python(ws4py)的IPython Notebook的WebSockets代理

灵感来自ipython-notebook-proxy,基于ipydra,并扩展后者以支持更复杂的用户身份验证以及代理,因为在我的用例中,只有端口80可以暴露.

我正在为工作者使用flask-socketgunicorn,但我遇到代理WebSockets的麻烦.IPython的使用三种不同的WebSockets连接/shell,/stdin以及/iopub,但我只能够拿到101 Switching Protocols的第2位.并在创建后尽快/stdin收到Connection Close Frame.

这是有问题的摘录代码:

# Flask imports...
from werkzeug import LocalProxy
from ws4py.client.geventclient import WebSocketClient

# I use my own LocalProxy because flask-sockets does not support Werkzeug Rules
websocket = LocalProxy(lambda: request.environ.get('wsgi.websocket', None))
websockets = {}

PROXY_DOMAIN = "127.0.0.1:8888"  # IPython host and port
methods = ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "PATCH",
           "CONNECT"]


@app.route('/', defaults={'url': ''}, methods=methods) …
Run Code Online (Sandbox Code Playgroud)

proxy websocket flask ipython-notebook ws4py

7
推荐指数
1
解决办法
2281
查看次数

Python - 通过 JSON 发送文件

我正在尝试使用 ws4py 创建一个实时聊天应用程序(如果有更好的套接字库,我希望推荐),并且我想在我的应用程序中实现文件传输(特别是 .wav 文件)。

对于文本聊天消息,我目前正在使用 JSON 库通过套接字发送序列化字典并在两侧对其进行解码。像这样的东西

message = raw_input("Message: ")
payload = {"username": self.username, "message": message}
payload["type"] = constants.CHAT
socket.send(json.dumps(payload), False)
Run Code Online (Sandbox Code Playgroud)

我希望能够对文件传输执行相同的操作,这样我就可以发送一个 JSON,其中一个字段是 .wav 文件的数据,其他字段是用户名、文件名、文件扩展名等。 。

这是发送文件的正确方法吗?如果是的话,我似乎不知道如何将文件转换为 JSON 字符串以通过网络发送。这就是我正在尝试的

fh = open('foo.wav', 'rb')
payload = {}
payload['content'] = fh.read()
import json
js = json.dumps(payload)
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误

UnicodeDecodeError: 'utf8' codec can't decode bytes in position 4-5: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)

我将如何序列化和反序列化包含文件的 JSON,以便我可以通过套接字发送它?

我的目标是,一旦成功,我就可以让该交易的接收端代码如下所示

def received_message(self, received_message):
    payload = json.loads(received_message)
    filename = payload['filename']
    fileData = payload['content']
    fh = open(filename, 'wb')
    fh.write(fileData)
    fh.close()
Run Code Online (Sandbox Code Playgroud)

python sockets serialization json ws4py

2
推荐指数
1
解决办法
6705
查看次数