Angular 8 socket.io-client 2.2.0 和 Java netty-socket.io 没有收到消息?
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 或码头一起使用,并且只想使用不需要的很棒的 netty 包任何 servlet,我试图修复它并弄清楚。
起初我以为是客户端的协议版本,所以我使用了与他们 github page here 上的演示完全相同的客户端,但那没有用,所以问题是服务器端的。
您的对象 (MessageEventObject
) 似乎除了您的其他构造函数之外还必须有一个默认的空构造函数,这可能是因为 netty 试图构建一个空对象但它失败了,这导致了您没有的异常没看到。
我正在使用 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 或码头一起使用,并且只想使用不需要的很棒的 netty 包任何 servlet,我试图修复它并弄清楚。
起初我以为是客户端的协议版本,所以我使用了与他们 github page here 上的演示完全相同的客户端,但那没有用,所以问题是服务器端的。
您的对象 (MessageEventObject
) 似乎除了您的其他构造函数之外还必须有一个默认的空构造函数,这可能是因为 netty 试图构建一个空对象但它失败了,这导致了您没有的异常没看到。