我一直在嘗試用python3中的flask-socketio服務器替換node.js socket.io服務器。然而,包括不同方法在內的多次嘗試都沒有產生好的結果。有人能指出我要出錯的地方嗎?用python服務器替換Nodejs Socket.io服務器
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
io.on('connection', function(socket){
socket.on('event', function(msg){
io.emit('event', msg);
console.log(msg);
});
});
http.listen(3000, function() {
console.log('Socket.io Running');
});
我在python3使用燒瓶socketio並參照嘗試它的docs是在這裏下面:
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!' # is this the default or does this have no effect ?
socketio = SocketIO(app)
@socketio.on('connect')
def test_connect():
print('Connected!! ')
@socketio.on('disconnect')
def test_connect():
print('Disconnected!! ')
@socketio.on('message')
def test_connect():
print('Msg came!! ')
@socketio.on('json')
def test_connect():
print('JSON is here!! ')
@socketio.on('event')
def test_event(msg):
print('In test_event function.')
emit('event', msg)
if __name__ == '__main__':
socketio.run(app, port = 3000)
Node.js的版本完美的作品。 但是,我不能說蟒蛇一樣。
- 連接&斷開打印線確實發生。
- 但事件函數(或其中的打印函數)永遠不會被調用。消息和json事件都不會被調用。
- 客戶端使用AngularJS併發出基本的Socket.io事件。
- 刪除'SECRET_KEY'conifg不起作用。服務器確實連接和斷開連接。
由於node.js服務器的工作完美,客戶端應該沒有任何影響。但爲了以防萬一,需要它,就在這裏。
客戶端代碼:
function copy(data) {
return JSON.parse(JSON.stringify(data));
}
function addUUID(data) {
if (Array.isArray(data)) {
return data.concat([UUID]);
} else {
var temp = copy(data);
temp.UUID = UUID;
return temp;
}
}
socket.emit('event', addUUID(data))
我也試過這個。然而,無濟於事。此外,打印行沒有執行,所以至少我認爲這不是一個數據解析的問題。 –
用過的命名空間選項? –
是的,我也使用了這個選項。 –