[英]Angular 8 socket.io-client 2.2.0 and Java netty-socket.io message not being received?
我正在使用netty-socket.io並且我像演示一樣實現了服務器。
我在服務器和客戶端上都收到onConnect
事件,但是當我發送消息{message: message}
時,雖然我在網絡選項卡中看到正在發送的消息,但我在服務器事件上沒有收到任何信息。
Configuration config = new Configuration();
config.setHostname("localhost");
config.setPort(9092);
final SocketIOServer server = new SocketIOServer(config);
server.addConnectListener(socketIOClient -> System.out.println("Connection test"));
server.addEventListener("messageevent", MessageEventObject.class, new DataListener<MessageEventObject>() {
@Override
public void onData(SocketIOClient socketIOClient, MessageEventObject messageEventObject, AckRequest ackRequest) throws Exception {
System.out.println("message received!");
}
});
server.start();
我的MessageEventObject
具有String message
屬性、 constructor
getters
和setters
,看起來與客戶端相同。
這是我的 websocket 服務客戶端:
export class WebsocketService {
private socket;
private subject = new Subject < any > ();
constructor() {
console.log('test!');
}
public connect(host: string, port: number) {
this.socket = io(`http://${host}:${port}`, {
'reconnection': false
});
this.socket.on('connect', this.onConnected);
this.socket.on('connect_error', this.onConnectionFailure);
}
public getConnectionStateUpdate(): Observable < any > {
return this.subject.asObservable();
}
public sendMessage(message: string) {
console.log('test');
this.socket.emit('messageevent', {
message: message
});
}
private onConnected = () => {
this.subject.next({
connected: true
});
}
private onConnectionFailure = () => {
this.subject.next({
connected: false
});
}
}
我做錯了什么嗎?
我很想在經過大量調試和頭疼之后回答我自己的問題,我懶惰地將 Engine IO 與 tomcat 或 jetty 一起使用,並且只想使用那個不需要任何 servlet 的很棒的 netty 包,我試圖修復它並弄清楚。
起初我以為這是客戶端的協議版本,所以我使用了與演示在他們的github 頁面上顯示的完全相同的客戶端,但這不起作用,所以問題是服務器端的。
除了其他構造函數之外,您的對象( MessageEventObject
)似乎還必須有一個默認的空構造函數,這可能是因為 netty 嘗試構建一個空對象並且它失敗了,這會導致您看不到的異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.