我正在使用koush提供的来自GitHub的AndroidAsync库。我需要这个库来创建一个WebSocket服务器,我能够创建它。
private static List<WebSocket> webSockets = new ArrayList<WebSocket>();
private static AsyncHttpServer httpServer = new AsyncHttpServer();
以下是实施:
public static void createWebSocket() {
httpServer.websocket("/", new AsyncHttpServer.WebSocketRequestCallback() {
@Override
public void onConnected(final WebSocket webSocket, AsyncHttpServerRequest request) {
webSockets.add(webSocket);
webSocket.setClosedCallback(new CompletedCallback() {
@Override
public void onCompleted(Exception ex) {
Log.d(TAG, "onCompleted");
}
});
webSocket.setStringCallback(new WebSocket.StringCallback() {
@Override
public void onStringAvailable(String s) {
Log.d(TAG, "onStringAvailable");
}
});
}
});
httpServer.listen(8080);
}
此实现完全正常。
但我想使用wss
协议,我可以使用JKS(Java KeyStore)证书作为websocket。
有没有办法做到这一点?如果没有这个库,我还可以使用其他库吗?任何一个例子都会非常感激。
谢谢!
答案 0 :(得分:0)
尝试this一个。我没用过它。但是,它表示它支持支持wss的Java服务器和Android客户端。祝你好运!
答案 1 :(得分:0)
老实说,我不知道我是对的。我刚碰到这个。
你觉得你可以用NanoHTTPD为java做这件事吗?
我想基本结构是:
import java.io.IOException;
import java.util.Map;
import fi.iki.elonen.NanoHTTPD;
class MyHTTPDTask extends AsyncTask {
private MyServer mHTTPD;
@Override
protected Object doInBackground(Object... params) {
mHTTPD = new MyServer();
mHTTPD.makeSecure(NanoHTTPD.makeSSLSocketFactory(R.string.keystore.jks, "password".toCharArray()), null);
}
}
import java.io.IOException;
import fi.iki.elonen.NanoHTTPD;
public class MyServer extends NanoHTTPD {
private final static int PORT = 8080;
public MyServer() throws IOException {
super(PORT);
start();
System.out.println( "\nRunning! Point your browers to http://localhost:8080/ \n" );
}
@Override
public Response serve(IHTTPSession session) {
String msg = "<html><body><h1>Hello server</h1>\n";
msg += "<p>We serve " + session.getUri() + " !</p>";
return newFixedLengthResponse( msg + "</body></html>\n" );
}
}
答案 2 :(得分:0)
对于服务器端,为什么不使用标准API javax.websocket
?它是Java EE的一部分。
对于Android方面,请参阅“Which WebSocket library to use in Android app?”。