如何将 Python websocket 客户端连接到我的 Spring 端点?
How can I connect a Python websocket client to my Spring endpoint?
我是 Python 的新手,我正在尝试连接到我目前在 Spring 中使用的服务 运行。
在服务器端,我通过扩展 DefaultHandshakeHandler 并重写 determineUser 方法来创建自定义握手处理程序,然后在其中提取用户信息。但是,请求进来的时候,并没有什么可以提取的。
我想知道的是,如何将此信息随请求一起发送?
这是我的基本 Python 客户端。
import websocket
import stomper
headers = {}
#### have also tried with headers = Authorization : Bearer + token ####
uri = "ws://localhost:[port]/ws"
def on_msg(ws,msg):
print(msg)
def on_error(ws,err):
print(err)
def on_closed(ws):
print(#Closed#)
def on_open(ws):
ws.send("CONNECT\naccept-version:1.0,1.1,2.0\n\nx00n")
sub = stomper.subscribe("/user/topic/my-end-point", "username", ack="auto")
ws.send(sub)
ws = websocket.WebSocketApp(uri, header=headers, on_message=on_msg, on_error=on_error, on_close=on_closed)
ws.on_open = on_open
ws.run.forever()
当我 运行 这个时,我得到以下信息:
\--- request header ---
GET /ws HTTP/1.1
Upgrade: websocket
Host: localhost:\[port\]
Origin: http://localhost\[port\]
Sec-WebSocket-Key: key
Sec-WebSocket-version: 13
Connection: Upgrade
\--- response header ---
HTTP/1.1 101 Switching Protocols
Date: date
Connection: Upgrade
Sec-WebSocket-Accept: key
Server: server-info
Upgrade: WebSocket
send: b'\x81...
CONNECTED
version: 1.1
session: session_id
server: server-info
60 秒后超时。
接下来我可以尝试什么?
我应该更新这个。
我在 url 字符串中缺少身份验证令牌参数。
现在按预期工作。
我是 Python 的新手,我正在尝试连接到我目前在 Spring 中使用的服务 运行。
在服务器端,我通过扩展 DefaultHandshakeHandler 并重写 determineUser 方法来创建自定义握手处理程序,然后在其中提取用户信息。但是,请求进来的时候,并没有什么可以提取的。
我想知道的是,如何将此信息随请求一起发送?
这是我的基本 Python 客户端。
import websocket
import stomper
headers = {}
#### have also tried with headers = Authorization : Bearer + token ####
uri = "ws://localhost:[port]/ws"
def on_msg(ws,msg):
print(msg)
def on_error(ws,err):
print(err)
def on_closed(ws):
print(#Closed#)
def on_open(ws):
ws.send("CONNECT\naccept-version:1.0,1.1,2.0\n\nx00n")
sub = stomper.subscribe("/user/topic/my-end-point", "username", ack="auto")
ws.send(sub)
ws = websocket.WebSocketApp(uri, header=headers, on_message=on_msg, on_error=on_error, on_close=on_closed)
ws.on_open = on_open
ws.run.forever()
当我 运行 这个时,我得到以下信息:
\--- request header ---
GET /ws HTTP/1.1
Upgrade: websocket
Host: localhost:\[port\]
Origin: http://localhost\[port\]
Sec-WebSocket-Key: key
Sec-WebSocket-version: 13
Connection: Upgrade
\--- response header ---
HTTP/1.1 101 Switching Protocols
Date: date
Connection: Upgrade
Sec-WebSocket-Accept: key
Server: server-info
Upgrade: WebSocket
send: b'\x81...
CONNECTED
version: 1.1
session: session_id
server: server-info
60 秒后超时。
接下来我可以尝试什么?
我应该更新这个。
我在 url 字符串中缺少身份验证令牌参数。
现在按预期工作。