Веб-сокет сервера в js и клиентский веб-сокет в Java AndroidJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Веб-сокет сервера в js и клиентский веб-сокет в Java Android

Сообщение Anonymous »

Привет, я пытаюсь установить соединение между сервером WSS, написанным на JS, и клиентом WSS, написанным на Java, но он продолжает выдавать ошибку соединения, где говорится, что не удалось подключиться в течение 10 секунд
ЭТО СЕРВЕР:

Код: Выделить всё

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);
}
}
}

Я знаю, что Android блокирует соединения WS и HTTP, поскольку они небезопасны, поэтому я подумал об установке соединения WSS, но я не могу подключиться, где я ошибся, у вас есть альтернативы. Я знаю, что Android блокирует Соединения WS и HTTP, поскольку они небезопасны, поэтому я подумал об установке соединения WSS, но не могу подключиться, где ошибся, у вас есть альтернативы.

Подробнее здесь: https://stackoverflow.com/questions/790 ... va-android
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»