SocketIO没有监听“打开”功能

时间:2019-05-26 02:57:21

标签: sockets flask socket.io flask-socketio

我已经尝试了6个多小时。我正在使用Flask-SocketIO并做出本机反应,以尝试使测试设置正常工作。似乎某些听众无法正常工作。这是我的代码:

SERVER SIDE PYTHON FILE (running on flask development server) 

@socketio.on('connect')
def connect():
    print('listening to connect')


@socketio.on('emission')
def emission(data):
    print('listen to emission')
    message = data['hello']
    emit('emission', message, broadcast=True)


CLIENT SIDE REACT NATIVE

import io from 'socket.io-client/dist/socket.io'; 
socket = null
export default class trial extends Component {

constructor(props) {
    super(props)

        this.state = {
        returned:'',
        }
     }

componentDidMount() { 
    console.log('test')
}

click() {
    //connect
    socket = io.connect('http://127.0.0.1:5000', {transports: 
    ["websocket"]} );


socket.on('emission', (data) => {
    this.setState({returned:data})
    console.log('emission was emitted by someone and sent', data);
    });
}  

click2() {
    socket.disconnect()
}

click3() {
    console.log('emission')
    socket.emit('emission', {hello: 'emitting message to server'});
}  

我正在尝试收听连接,但成功了,Flask开发服务器会打印出“监听连接”

然后,我尝试收听“发射”,向其发送消息,然后将其发送回去。这部分将无法工作,并且没有任何内容可打印到开发服务器。

我已经尝试过socket.io.on,连接和断开工作

1 个答案:

答案 0 :(得分:0)

您必须使用

运行Flask-SocketIO
python flask_script.py

不是

flask run

这是为了确保gevent正在运行并能够管理websocket;否则,您使用websockets的任何东西都将无法工作。