在 websocket 库中获取客户端 IP 地址
Getting client IP address in websocket library
我正在使用 Network.WebSocket
库。我在 PendingConnection
上尝试 WS.requestHeaders . WS.pendingRequest
来获取连接请求信息。但是,它似乎没有客户端 IP 信息,只有 Host
键中的服务器 IP 信息。下面是一个示例输出:
[("Upgrade","websocket"),("Sec-WebSocket-Extensions","permessage-deflate;
client_max_window_bits"),("Sec-WebSocket-Key","<taken out for SO post>"),
("Connection","Upgrade"),("Sec-WebSocket-Version","13"),("Host","localhost:8080")]
当 运行 Network.Websocket
时获取 "Client IP" 信息的好方法是什么(我 运行 它在 Snap
monad 中使用 runWebSocketsSnap
).我想记录它以防出错。
runWebSocketsSnap
只是一个常规的 Snap
应用程序,因此您可以使用 rqRemoteAddr
获取远程 IP 地址:
do
addr <- getsRequest rqRemoteAddr
runWebSocketsSnap $ \pending -> ...
我正在使用 Network.WebSocket
库。我在 PendingConnection
上尝试 WS.requestHeaders . WS.pendingRequest
来获取连接请求信息。但是,它似乎没有客户端 IP 信息,只有 Host
键中的服务器 IP 信息。下面是一个示例输出:
[("Upgrade","websocket"),("Sec-WebSocket-Extensions","permessage-deflate;
client_max_window_bits"),("Sec-WebSocket-Key","<taken out for SO post>"),
("Connection","Upgrade"),("Sec-WebSocket-Version","13"),("Host","localhost:8080")]
当 运行 Network.Websocket
时获取 "Client IP" 信息的好方法是什么(我 运行 它在 Snap
monad 中使用 runWebSocketsSnap
).我想记录它以防出错。
runWebSocketsSnap
只是一个常规的 Snap
应用程序,因此您可以使用 rqRemoteAddr
获取远程 IP 地址:
do
addr <- getsRequest rqRemoteAddr
runWebSocketsSnap $ \pending -> ...