我有一个使用socket.IO的简单python服务器
这是服务器代码:
from flask import Flask, request
from flask_socketio import SocketIO, send
app = Flask(__name__)
socketio = SocketIO(app)
@socketio.on('message')
def handleMessage(msg):
print('Message: ' + msg)
send(msg, broadcast=True)
@socketio.on('connect')
def connect():
print('New Client: ' + request.sid)
socketio.emit('message', "koko", room=request.sid)
if __name__ == '__main__':
socketio.run(app)
我有一个简单的应用程序需要连接到服务器,我在互联网上搜索如何这样做,这就是我做的:
import com.github.nkzawa.socketio.client.IO
import com.github.nkzawa.socketio.client.Socket
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.chat_show)
var socket = IO.socket("http://192.168.1.108:5000")
socket.connect()
}
我添加了:
implementation 'com.github.nkzawa:socket.io-client:0.3.0'
和:
<uses-permission android:name="android.permission.INTERNET"/>
我知道当你在android中使用套接字时,你需要运行asyncTask或线程,但我的程序甚至都不会失败!它会忽略这些代码行的存在。
我忘记了什么吗?
我知道服务器有效,因为我有一个简单的javascript客户端来检查它:
<html>
<head>
<title>Chat Room</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.8/socket.io.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function() {
var socket = io.connect('http://127.0.0.1:5000');
socket.on('message', function(msg) {
$("#messages").append('<li>'+msg+'</li>');
console.log('Received message');
});
$('#sendbutton').on('click', function() {
socket.send($('#myMessage').val());
$('#myMessage').val('');
});
});
</script>
<ul id="messages"></ul>
<input type="text" id="myMessage">
<button id="sendbutton">Send</button>
</body>
</html>