【发布时间】:2018-03-09 12:57:53
【问题描述】:
我正在为我的大学构建学生出勤申请。出席的地点是通过大学网络进行的。每个教室都有一个单独的“路由器”,系统会检测学生是否在该范围内。 同样的,我要做的是建立一个socket连接,每次连接,服务器反过来接收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 服务器。但是,当我将浏览器用作客户端时,“连接”事件确实有效。
这是我的客户端代码:
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;
}
【问题讨论】:
标签: android websocket socket.io android-emulator kotlin