Почему сервер Socket.io не получает соединение от клиента студии Android? ⇐ Android
-
Anonymous
Почему сервер Socket.io не получает соединение от клиента студии Android?
Я застрял в попытке установить соединение между моим сервером socket.io на узле js (socket.io версии: 4.7.2) и студией Android (сокет версии: 2.0.0), может ли кто-нибудь помочь решить эту проблему? Когда я обновляю активность, на сервере ничего не происходит
сервер:
const express = require('express'); //требуется экспресс-модуль const сокет = require('socket.io'); //требуется модуль Socket.io const fs = require('fs'); константное приложение = экспресс(); вар ПОРТ = процесс.env.PORT || 3000; константный сервер = app.listen(ПОРТ); //сообщает разместить сервер на localhost:3000 //Играем в переменные: app.use(express.static('public')); //показываем статические файлы в «публичном» каталоге console.log('Сервер работает'); const io = сокет (сервер); //Соединение Socket.io ------------------ io.on('соединение', функция(сокет) { console.log('Клиент подключен.'); // Отключаем прослушиватель сокет.on('отключить', функция() { console.log('Клиент отключен.'); }); }); клиент: SocketHandler.kt
импортировать io.socket.client.IO импортировать io.socket.client.Socket импортировать java.net.URISyntaxException объект SocketHandler { lateinit var mSocket: Сокет @Синхронизировано весело setSocket() { пытаться { // «http://10.0.2.2:3000» — это сеть, которую ваш эмулятор Android должен использовать для подключения к локальной сети на вашем компьютере. // "http://localhost:3000/" не будет работать // Если вы хотите использовать свой физический телефон, вы можете использовать свой IP-адрес плюс: 3000 // Это позволит вашему эмулятору Android и физическому устройству у вас дома подключиться к серверу. mSocket = IO.socket("http://0.0.0.0:3000") } catch (e: URISyntaxException) { } } @Синхронизировано весело getSocket(): Socket { вернуть mSocket } @Синхронизировано весело установитьConnection() { мсокет.connect() } @Синхронизировано весело closeConnection() { mSocket.disconnect() } } Код активности
импортировать android.content.Intent импортировать androidx.appcompat.app.AppCompatActivity импортировать android.os.Bundle импортировать android.widget.TextView класс MainActivity : AppCompatActivity() { переопределить fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView (R.layout.activity_main) * SocketHandler.setSocket() val mSocket = SocketHandler.getSocket() мсокет.connect()* val Dec_button = findViewById(R.id.login_button) Dec_button.setOnClickListener { val намерение = Intent(this, LoginPage::class.java) startActivity (намерение) } } } Я пытался перезагрузиться, изменить локальный IP-адрес (в активности), погуглить
Я застрял в попытке установить соединение между моим сервером socket.io на узле js (socket.io версии: 4.7.2) и студией Android (сокет версии: 2.0.0), может ли кто-нибудь помочь решить эту проблему? Когда я обновляю активность, на сервере ничего не происходит
сервер:
const express = require('express'); //требуется экспресс-модуль const сокет = require('socket.io'); //требуется модуль Socket.io const fs = require('fs'); константное приложение = экспресс(); вар ПОРТ = процесс.env.PORT || 3000; константный сервер = app.listen(ПОРТ); //сообщает разместить сервер на localhost:3000 //Играем в переменные: app.use(express.static('public')); //показываем статические файлы в «публичном» каталоге console.log('Сервер работает'); const io = сокет (сервер); //Соединение Socket.io ------------------ io.on('соединение', функция(сокет) { console.log('Клиент подключен.'); // Отключаем прослушиватель сокет.on('отключить', функция() { console.log('Клиент отключен.'); }); }); клиент: SocketHandler.kt
импортировать io.socket.client.IO импортировать io.socket.client.Socket импортировать java.net.URISyntaxException объект SocketHandler { lateinit var mSocket: Сокет @Синхронизировано весело setSocket() { пытаться { // «http://10.0.2.2:3000» — это сеть, которую ваш эмулятор Android должен использовать для подключения к локальной сети на вашем компьютере. // "http://localhost:3000/" не будет работать // Если вы хотите использовать свой физический телефон, вы можете использовать свой IP-адрес плюс: 3000 // Это позволит вашему эмулятору Android и физическому устройству у вас дома подключиться к серверу. mSocket = IO.socket("http://0.0.0.0:3000") } catch (e: URISyntaxException) { } } @Синхронизировано весело getSocket(): Socket { вернуть mSocket } @Синхронизировано весело установитьConnection() { мсокет.connect() } @Синхронизировано весело closeConnection() { mSocket.disconnect() } } Код активности
импортировать android.content.Intent импортировать androidx.appcompat.app.AppCompatActivity импортировать android.os.Bundle импортировать android.widget.TextView класс MainActivity : AppCompatActivity() { переопределить fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView (R.layout.activity_main) * SocketHandler.setSocket() val mSocket = SocketHandler.getSocket() мсокет.connect()* val Dec_button = findViewById(R.id.login_button) Dec_button.setOnClickListener { val намерение = Intent(this, LoginPage::class.java) startActivity (намерение) } } } Я пытался перезагрузиться, изменить локальный IP-адрес (в активности), погуглить
Мобильная версия