我一直在尝试用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))
我也试过这个。然而,无济于事。此外,打印行没有执行,所以至少我认为这不是一个数据解析的问题。 –
用过的命名空间选项? –
是的,我也使用了这个选项。 –