Code: Select all
WebSocket socket = WebSockets.newSocket(WebSockets.toSecureWebSocketUrl("myDomain", 8080));
< /code>
löst diesen Fehler aus: < /p>
Es wurde nicht geschafft, eine Öffnungshandshake -Anforderung an den Server zu senden: PKIX -Pfad
fehlgeschlagen:
Sun.security.Provider.Certpath.suncertpathbuilderex -. /> < /blockquote>
Ich weiß, dass die Client -Seite der WebSocket -Host und der Port in Ordnung sind, denn wenn ich es versuche, während der WebSocket -Server nicht aktiv ist, ist die Fehlermeldung korrekt "Verbindung abgelehnt". Haftet mit dieser alten Version aufgrund ihrer Abschaltung und dann diesen Fehler? So erneuern Sie das Zertifikat auf dem Server mit certbot, verwendet jedoch die DST -Root -CA X3 -Version für die neue.package ...textwebsockets;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.utils.ScreenUtils;
import com.github.czyzby.websocket.WebSocket;
import com.github.czyzby.websocket.WebSocketListener;
import com.github.czyzby.websocket.WebSockets;
import java.io.ByteArrayInputStream;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import javax.security.auth.x500.X500Principal;
public class TestWebSockets extends ApplicationAdapter {
public final String LOG_TAG = "LOG_TestWebSockets";
SpriteBatch batch;
Texture img;
@Override
public void create () {
batch = new SpriteBatch();
img = new Texture("badlogic.jpg");
// https://github.com/MrStahlfelge/gdx-websockets/tree/master
WebSocket socket = WebSockets.newSocket(WebSockets.toSecureWebSocketUrl("myDomain", 8080));
socket.setSendGracefully(true);
socket.addListener(new WebSocketListener() {
@Override
public boolean onOpen(WebSocket webSocket) { ... }
@Override
public boolean onClose(WebSocket webSocket, int closeCode, String reason) { ... }
@Override
public boolean onMessage(WebSocket webSocket, String packet) { ... }
@Override
public boolean onMessage(WebSocket webSocket, byte[] packet) { ... }
@Override
public boolean onError(WebSocket webSocket, Throwable error) {
Gdx.app.log(LOG_TAG, "onError: " + error.getCause().getMessage() + "; " + error.getMessage());
return false;
}
});
socket.connect();
}
...
}
< /code>
Server -Seitencode (node.js auf einem digitalocean VPS -Tropfen mit Linux): < /p>
'use strict';
const express = require('express');
const path = require('path');
const https = require('https');
const fs = require('fs');
const WebSocket = require('ws');
const app = express();
app.use(express.static(path.join(__dirname, '/public')));
const server = https.createServer({
key: fs.readFileSync('./privkey.pem'),
cert: fs.readFileSync('./cert.pem')
}, app);
const wss = new WebSocket.Server({server: server});
wss.on('connection', function (ws) { ... });
server.listen(8080, function () {
console.log('Listening on 8080');
});
... // various wss.on* methods
Der Website -Code:
const wss = new WebSocket('wss://myDomain:8080');
... // various wss.on* methods
< /code>
In der Browser -Netzwerkkonsole wird eine 101 -Zeile angezeigt und empfängt die Servermeldungen. (Ich sende auch Nachrichten an den Server, aber ich habe diesen Code hier entfernt, weil nicht relevant für diesen Beitrag). Ergebnis:
Danke