gpt4 book ai didi

javascript - 使用 js 和 perl 进行身份验证的 Websocket

转载 作者:行者123 更新时间:2023-11-30 20:51:54 26 4
gpt4 key购买 nike

我正在使用纯 js(无库)实现到服务器的 websocket 连接(到 PERL 脚本)。上网查了一下发现可以在URL请求中添加自定义参数,如下:

var ws=new WebSocket('wss://mydomain.com:9999/?UserID=329729');

我的问题是:在 PERL 的 NET::WebSocket::Server 中,我如何处理这个查询字符串以在握手中检索 UserID(如果可能的话)?

Net::WebSocket::Server->new(
listen => $ssl,
silence_max=>3600,
on_connect => sub {
my($serv,$conn)=@_;
$conn->on(
handshake => sub {
my($conn,$handshake)=@_;

# ???



},
);
}
)->start;

任何帮助都将不胜感激

最佳答案

the documentation你有多个例子。其中之一使用 handshake 事件,如下所示:

    ...
$conn->on(
handshake => sub {
my ($conn, $handshake) = @_;
$conn->disconnect() unless $handshake->req->origin eq $origin;
},

通过以下链接到 more documentation你可以看到握手事件中的 $handshake 是一个 Protocol::WebSocket::Handshake::Server对象和上例中使用的(当前未记录的)req 方法可能导致 Protocol::WebSocket::Request目的。此类的文档提到了一个未记录的 resource_name 方法,但为此类提供的示例表明,这是 URL 的路径组件,即 /?UserID=329729您的具体问题。

基于此,我建议以下内容适用于您的特定 URL:

    $conn->on(
handshake => sub {
my($conn,$handshake)=@_;
my ($id) = $handshake->req->resource_name =~m{\?UserID=(\d+)};

关于javascript - 使用 js 和 perl 进行身份验证的 Websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48093847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com