Java-клиент socket-io не подключается к js-серверу nginx / node - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть приложение для Android, и оно хорошо работает в моей локальной среде с nodejs и express.

У меня настроены nodejs и socket io на сервере, и мое приложение не может правильно подключиться к серверу.

Когда приложение открывает сокет, клиент io должен подключиться к серверу сокета io. Клиент может подключиться к серверу, так как сервер видит клиента и регистрирует его ... но когда я пытаюсь что-то отправить с клиента или с сервера, он не достигает своего места назначения.

Это часть моего Android-клиента

    socket = IO.socket(SERVER_ADDRESS);
        socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                NifiLog.log("Connected To Socket IO"); //this does not work
            AccessUtils.setOnlineStatus(context, "online");
            if(AccessUtils.getUser(context)!=null&&AccessUtils.getUser(context).get_id()!=null){
                socket.emit("online_acknowledgement", AccessUtils.getUser(context).get_id(),AccessUtils.getToken(context), new Ack() {
                    @Override
                    public void call(Object... args) {
                        String response = (String) args[0];
                    }
                });
            }
            }

        }).on("friend_online", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
            User friend = NifiGson.getGson().fromJson(args[0].toString(), User.class);
            addFriend(friend);
            eventBus.postSticky(new FriendOnlineEvent(friend));
            }

        })

NifiLog.log («Подключен к сокету ввода-вывода»); никогда не встречается

Вот мой сервер настройки

  location / {
            proxy_pass http://localhost:3040;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
            proxy_request_buffering off;
            proxy_buffering off;
            proxy_read_timeout 180s;
    }

    location /socket {
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_pass http://localhost:3030;
}

узел js работает на порту 3040, а сокет io - на порту 3030

Сокет io на сервере

 const express = require('express');

 var http = require('http').Server(express);
 global.io = require('socket.io')(http);

 const server = app.listen(config.port, function(){
console.log("Express started on " +config.base_url +' in '+config.env +' environment. Press Ctrl + C to terminate');
mongoose.connect(config.db.uri, config.db.options)
.then(()=> { log.info(`Succesfully Connected to the Mongodb Database  at URL : `+config.db.uri)})
.catch((error)=> { log.error(error)})
});

require('./routes/socketio_routes.route');

http.listen(config.socket_port, function(){
    console.log('Socket IO listening on *:'+config.socket_port); //this works
});

 io.on('connection', function(socket){
    console.log('a user connected'); //this works
    socket.on('online_acknowledgement', function(id, token, acknowledgement){

    }

    socket.on('disconnect', function(data){
    console.log('a user disconnected #######'); //this works
 } 

 socket.on('game_start', function(game, token){
    console.log('a game start'); //client sends this to server but it never reaches here - this never works
 }


 }

Спасибо за помощь.

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