Android客户端无法将Node.Js服务器与Socket IO连接

时间:2019-04-23 21:39:19

标签: android node.js express socket.io

我有一个Node.JS Express服务器和一个Android应用程序,我试图将服务器和该应用程序与Socket.io连接起来,但是它不起作用

我正在使用Express Generator,并且我的服务器要使用Socket.io,我在这里尝试了以下步骤:Using socket.io in Express 4 and express-generator's /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};

“用户连接”没有打印,并且我没有任何错误,所以我知道他们没有连接,但是我不知道为什么

0 个答案:

没有答案