我正在为我的大学建立一个学生出勤申请。通过大学网络参加考试的地方。每个教室都有一个单独的“路由器”,系统会检测学生是否在该范围内。 同样,我要做的是建立套接字连接,每次连接时,服务器都会收到WiFi信息来判断教室。
要建立,我首先制作了这个index.js
文件,这里是它的代码
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req,res){
res.sendFile(__dirname+'/index.html');
})
http.listen(4040, function(){
console.log("Server is listening on port 4040");
})
io.on('connection', function(socket){
console.log('connect', "A user connected "+ socket.id)
io.on('disconnect', function(socket){
console.log("disconnect A user disconnected" + socket.id)
})
})
问题:问题在于,“连接”事件无效。它说它在听,但没有任何东西让控制台记录。我使用模拟器作为客户端和本地XAMPP服务器。但是,当我使用浏览器作为客户端时,'connection'事件会起作用。
这是我的客户端代码:
private val socket = Socket()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_student_home)
setSupportActionBar(student_toolbar)
val toggle = ActionBarDrawerToggle(
this, student_drawer_layout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close)
student_drawer_layout.addDrawerListener(toggle)
toggle.syncState()
student_nav_view.setNavigationItemSelectedListener(this)
socket.connect()
}
override fun onResume() {
super.onResume()
socket.connect()
}
override fun onStart() {
super.onStart()
socket.connect()
}
override fun onDestroy() {
super.onDestroy()
socket.disconnect()
}//[End : onDestroy]
fun Socket() : Socket{
val socket : Socket
try {
socket = IO.socket("http://localhost:4040")
} catch (e: URISyntaxException) {
throw RuntimeException(e)
}
return socket;
}
答案 0 :(得分:1)
尝试更改" localhost
"到您机器的IP地址,如"http://192.168.1.100:4040"
。你可以发布backtrace的截图吗?