SWI-Prolog ERROR: No permission to open websocket

SWI-Prolog ERROR: No permission to open websocket

我尝试了下面的代码,我得到了:

错误:无权打开 websocket `'ws://localhost:9999''

为什么?

如果我使用 root(.),没问题。

更新(正确代码):

:- use_module(library(http/websocket)).
:- use_module(library(http/thread_httpd)).
:- use_module(library(http/http_dispatch)).
:- use_module(library(http/http_path)).
:- use_module(library(http/http_authenticate)).

:- initialization main.

main :-
    run.

:- http_handler(root(ws), http_upgrade_to_websocket(echo, []), [spawn([])]).

echo(WebSocket) :-
    ws_receive(WebSocket, Message),
    (   Message.opcode == close
    ->  true
    ;   ws_send(WebSocket, Message),
        echo(WebSocket)
    ).

run :-
    run(9999).

run(Port) :-
    http_server(http_dispatch, [port(Port)]).

stop :-
    stop(9999).

stop(Port) :-
    http_stop_server(Port, []).

抽象来说,如果你使用root(X),那么这意味着可用的路径是/X

因此,如果您指定 root(ws),那么在您的情况下,您将必须访问:

ws://localhost:9999/ws

如果您指定 root(.) 那么 / 就足够了等等

下次,请指定一个完整示例,以便其他人可以实际试用您的代码,而不必猜测您代码段的其余部分。