如何将java中的websocket客户端与nodejs中的websocket服务器连接起来?
我正在基于WebSocket(WebSocket客户端库:,他的文档:)为Android开发一个消息传递应用程序(用Java编写),但客户端似乎无法与服务器连接(用nodeJs编写,与herokuapp一起分发) 经过一些在线研究,我试图在清单中添加这些代码行,但似乎无论如何都不起作用:如何将java中的websocket客户端与nodejs中的websocket服务器连接起来?,java,android,node.js,heroku,java-websocket,Java,Android,Node.js,Heroku,Java Websocket,我正在基于WebSocket(WebSocket客户端库:,他的文档:)为Android开发一个消息传递应用程序(用Java编写),但客户端似乎无法与服务器连接(用nodeJs编写,与herokuapp一起分发) 经过一些在线研究,我试图在清单中添加这些代码行,但似乎无论如何都不起作用: <uses-permission android:name="android.permission.INTERNET" > </uses-permission> <uses-p
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission>
客户代码(主要活动):
客户端代码(webSocket类实现):
我正在开发一个类似的应用程序,发现了一个问题。将客户端连接到服务器的线程完成后,将调用客户端上的@OnMessage处理程序。你经历过同样的事情吗?我尝试过tomcat/tyrus库,但它们都遵循WebSocket JSR。我正在开发一个类似的应用程序,发现了一个问题。将客户端连接到服务器的线程完成后,将调用客户端上的@OnMessage处理程序。你经历过同样的事情吗?我尝试过tomcat/tyrus库,但它们都遵循WebSocket JSR。
const SocketServer = require('ws').Server;
const port = process.env.PORT || 3000;
const server = require('express')().listen(port);
const wsServer = new SocketServer({ server });
wsServer.on('connection', (ws) => {
console.log('connected');
ws.on('message', (arrayData) => {
console.log('a message has arrived');
});
});
package com.example.chat;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import java.net.URI;
import java.net.URISyntaxException;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
connectToServer();
}
void connectToServer(){
URI uri;
try {
uri = new URI("wss://earthonline.herokuapp.com");
} catch (URISyntaxException e) {
return;
}
new webSocket(uri).connect();
}
}
package com.example.chat;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import java.net.URI;
import java.nio.ByteBuffer;
public class webSocket extends WebSocketClient {
webSocket(URI uri){
super(uri);
}
@Override
public void onOpen(ServerHandshake handshakedata) {
send("Hello, it is me. Mario :)");
System.out.println("new connection opened");
}
@Override
public void onClose(int code) {
System.out.println("closed with exit code " + code);
}
@Override
public void onMessage(String message) {
System.out.println("received message: " + message);
}
@Override
public void onMessage(ByteBuffer message) {
System.out.println("received ByteBuffer");
}
@Override
public void onError(Exception ex) {
System.err.println("an error occurred:" + ex);
}
}