gpt4 book ai didi

java - 无法连接通过sparkjava创建的websocket url

转载 作者:行者123 更新时间:2023-12-01 22:18:33 24 4
gpt4 key购买 nike

我正在尝试使用 sparkjava 创建一个 websocket框架。下面是创建 websocket 的代码

public final class MainWS {
static Map<Session, String> USER_SESSION_MAP = new ConcurrentHashMap<>();
static int nextUserNumber = 1;
public static void main(String[] args) {
port(8090);
webSocket("/echo", ChatWebSocketHandler.class);
init();
}
public static void broadcastMessage(String sender, String message) {
USER_SESSION_MAP.keySet().stream().filter(Session::isOpen).forEach(session -> {
try {
session.getRemote().sendString(String.valueOf(new JSONObject().put("userMessage", "message to pass")
.put("userlist", USER_SESSION_MAP.values())));
} catch (Exception e) {
e.printStackTrace();
}
});
}

}

现在CharWebSocketHandler代码如下:

    @WebSocket
public final class ChatWebSocketHandler {

private String sender, msg;

@OnWebSocketConnect
private void onConnect(Session user) throws Exception {
String username = "User" + MainWS.nextUserNumber++;
MainWS.USER_SESSION_MAP.put(user, username);
MainWS.broadcastMessage(sender = "Server", msg = (username + " joined the Main"));
}

@OnWebSocketClose
private void onClose(Session user, int statusCode, String reason) {
String username = MainWS.USER_SESSION_MAP.get(user);
MainWS.USER_SESSION_MAP.remove(user);
MainWS.broadcastMessage(sender = "Server", msg = (username + " left the Main"));
}

@OnWebSocketMessage
private void onMessage(Session user, String message) {
MainWS.broadcastMessage(sender = MainWS.USER_SESSION_MAP.get(user), msg = message);
}
}

运行我的 MainWS 程序后,我使用 rxjs 通过 Angular 获取 websocket 连接

代码如下:

export class WebsocketService {
socket: WebSocketSubject<WSMessageService>
constructor() {
this.socket = new WebSocketSubject("ws://localhost:8090/echo");
this.socket.subscribe(
msg => {
console.log(msg)
},
err => {
console.log(err)
},
() => {
console.log('complete')
}
);
}
public sendMessage(message: WSMessageService): void {
this.socket.next(message)
}
}

现在,当我尝试运行我的代码时,我收到如下错误:

Firefox 无法与位于 ws://localhost:8090/echo 的服务器建立连接错误 { target: WebSocket, isTrusted: true, srcElement: WebSocket, currentTarget: WebSocket, eventPhase: 2, bubbles: false, cancelable: false, returnValue: true, defaultPrevented: false,composed: false, … }

完全不确定我到底哪里做错了。如果有人有任何想法请告诉我。

最佳答案

问题是我在 ChatWebSocketHandler 类中创建了所有私有(private)方法。创建所有公共(public)方法后,我可以连接并获取 websocket 对象。

关于java - 无法连接通过sparkjava创建的websocket url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58609884/

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