我正在尝试通过 websocket 连接(我正在使用 python websocket 客户端)发送 session ID(我在对 http 服务器进行身份验证后获得它),我需要将其作为 header 传递参数,服务器将在其中读取所有 header 并检查它们。
问题是:如何使用现有的客户端 python Websocket 实现添加 header ,我发现它们都不能这样做,还是我一开始就采用了错误的方法进行身份验证?
-- 更新--,下面是我使用的代码模板:
def on_message(ws, message):
print 'message received ..'
print message
def on_error(ws, error):
print 'error happened .. '
print error
def on_close(ws):
print "### closed ###"
def on_open(ws):
print 'Opening Websocket connection to the server ... '
## This session_key I got, need to be passed over websocket header isntad of ws.send.
ws.send(session_key)
if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp("ws://localhost:9999/track",
on_open = on_open,
on_message = on_message,
on_error = on_error,
on_close = on_close,
)
ws.on_open = on_open
ws.run_forever()
最佳答案
似乎 websocket-client 已更新为包含 websocket header ,因为这个问题被问到。现在您可以简单地将 header 参数列表作为字符串传递:
custom_protocol = "your_protocol_here"
protocol_str = "Sec-WebSocket-Protocol: " + custom_protocol
ws = websocket.WebSocketApp("ws://localhost:9999/track",
on_open = on_open,
on_message = on_message,
on_error = on_error,
on_close = on_close,
header = [protocol_str]
)
如果您对有效 header 的完整列表感兴趣,请参阅 websocket RFC6455 文档:https://www.rfc-editor.org/rfc/rfc6455#section-4.3
GitHub 来源:https://github.com/liris/websocket-client/blob/master/websocket.py
关于python - 如何在 websocket python 客户端中添加更多 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14454949/