SocketIO не слушает функцию «вкл» - PullRequest
0 голосов
/ 26 мая 2019

Я пробовал это в течение 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 голосов
/ 26 мая 2019

Вы должны запустить Flask-SocketIO с

python flask_script.py

, а не

flask run

Это необходимо для того, чтобы Gevent работал и мог управлять веб-сокетами;в противном случае все, для чего вы используете websockets, не будет работать.

...