我有一个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};
“用户连接”没有打印,并且我没有任何错误,所以我知道他们没有连接,但是我不知道为什么