ЭТО СЕРВЕР:
Код: Выделить всё
const WebSocket = require('ws');
const https = require('https');
const fs = require('fs');
// Load your SSL certificate and key
const server = https.createServer({
key: fs.readFileSync('server.key'), // Your private key
cert: fs.readFileSync('server.cert') // Your certificate
});
const wss = new WebSocket.Server({ server });
wss.on('connection', (ws) => {
console.log('Client connected');
ws.on('message', (message) => {
console.log('Received:', message);
ws.send(`Echo: ${message}`); // Invia un messaggio di risposta
});
ws.on('close', () => {
console.log('Client disconnected');
});
});
server.listen(3000, () => {
console.log('WebSocket server is running on wss://localhost:3000');
});
Код: Выделить всё
package com.example.webrtc;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.WebSocket;
import okhttp3.WebSocketListener;
import okhttp3.Response;
import okio.ByteString;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "WebSocketClient";
private WebSocket webSocket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create UnsafeOkHttpClient instance to bypass SSL verification
OkHttpClient client = getUnsafeOkHttpClient();
// Build the WebSocket request
Request request = new Request.Builder().url("wss://192.168.10.179:3000").build();
// Create a WebSocket listener
WebSocketListener listener = new WebSocketListener() {
@Override
public void onOpen(WebSocket webSocket, Response response) {
Log.d(TAG, "WebSocket opened");
webSocket.send("Hello, Server!"); // Send a message to the server
}
@Override
public void onMessage(WebSocket webSocket, String text) {
Log.d(TAG, "Message from server: " + text);
}
@Override
public void onMessage(WebSocket webSocket, ByteString bytes) {
Log.d(TAG, "Message from server: " + bytes.hex());
}
@Override
public void onClosing(WebSocket webSocket, int code, String reason) {
webSocket.close(1000, null);
Log.d(TAG, "WebSocket closing: " + reason);
}
@Override
public void onFailure(WebSocket webSocket, Throwable t, Response response) {
Log.e(TAG, "WebSocket error: " + t.getMessage());
}
};
// Connect to the WebSocket server
webSocket = client.newWebSocket(request, listener);
}
// Method to create an Unsafe OkHttpClient to bypass SSL verification
private OkHttpClient getUnsafeOkHttpClient() {
try {
final TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}
};
final SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new SecureRandom());
final javax.net.ssl.SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
return new OkHttpClient.Builder()
.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0])
.hostnameVerifier((hostname, session) -> true) // Accept all hostnames
.build();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... va-android