Клиент Android не может подключить сервер Node.Js к Socket IO - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть сервер Node.JS Express и приложение для Android, я пытаюсь соединить сервер и приложение с Socket.io, но оно не работает

Я использую Express Generator и для своего серверадля работы с Socket.io я попробовал шаги здесь: Использование socket.io в Express 4 и Express-Generator / bin / www , который не работал.Я нашел это на github: https://github.com/onedesign/express-socketio-tutorial, и он работал для меня, используя socketIO на моей странице индекса.Поэтому я попытался создать небольшое приложение на Android Studio и использовать сокеты для отправки сообщений.Я не получаю никаких ошибок на этой стороне, но приложение не подключается к моему серверу.

вот мой код Android это MainActivity:

public class MainActivity extends AppCompatActivity {

    Button button;
    Socket mSocket;

    private void attemptSend() {

        JSONObject obj = new JSONObject();
        try {
            obj.put("idhaber", 1);
            System.out.println("I'm here");
        }catch (JSONException e) { }


        mSocket.emit("join", obj);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SocketThing app = new SocketThing();
        mSocket = app.getSocket();
        mSocket.connect();

        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                // Sending an object
                attemptSend();
            }
        });
    }

}

он печатает, я здесь,Вот SocketThing

public class SocketThing {

    private Socket mSocket;
    {
        try {
            mSocket = IO.socket("http://192.168.1.24:3000");
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }

    public Socket getSocket() {
        return mSocket;
    }

Я попробовал здесь localhost, который, как я узнал, не работает, поэтому я использовал 10.0.2.2, а также мой локальный IP-адрес.ни один из них не работал

на стороне сервера:

здесь / www файл




var app = require('../app').app;


var debug = require('debug')('backendim:server');
var http = require('http');


var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

/**
 * Create HTTP server.
 */



var server = require('../app').server;




/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port,()=>{

  console.log('Node app is running on port' +port)

  });

(...)

здесь файл app.js

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var bodyParser = require('body-parser');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();


var server = require('http').Server(app);
var io = require('socket.io')(server);

(...)

app.use(function(req, res, next){

  res.io = io;

  next();
});


(...)

io.on('connection', (socket) => {
  io.emit('this', { will: 'be received by everyone'});
  console.log('user connected')

  socket.on('join', function(nickname) {

          console.log("joined")


      });

  });

module.exports = {app: app, server: server};

"Пользователь, подключенный "не печатается, и я не получаю никаких ошибок, поэтому я знаю, что они не подключаются, но я не знаю почему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...