Реагировать на собственный клиент socket.io, успешно подключившийся, но выбросы не принимаются ни с одного конца - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь установить связь между сервером socket-io и приложением iOS.Устройства подключаются в соответствии с обоими журналами, но любые действия socket.emit() клиента или сервера не вызывают соответствующего события .on() на другом конце.Вот минимальный пример, который вызывает эту проблему.

Код сервера:

from aiohttp import web
import socketio

sio = socketio.AsyncServer()
app = web.Application()
sio.attach(app)

@sio.on('connect', namespace='/mp')
async def connect(sid, environ):
    print("connect ", sid)

@sio.on('chat message', namespace='/mp')
async def message(sid, data):
    print("message ", data)

@sio.on('disconnect', namespace='/mp')
def disconnect(sid):
    print('disconnect ', sid)

if __name__ == '__main__':
    web.run_app(app)

Код клиента (приложение React Native)

window.navigator.userAgent = 'ReactNative';
import React from "react"
import openSocket from "socket.io-client"
import { StyleSheet, Text, View, FlatList } from "react-native"
console.ignoredYellowBox = ["Remote debugger"]
import { YellowBox } from "react-native"
YellowBox.ignoreWarnings([
    "Unrecognized WebSocket connection option(s) `agent`, `perMessageDeflate`, `pfx`, `key`, `passphrase`, `cert`, `ca`, `ciphers`, `rejectUnauthorized`. Did you mean to put these under `headers`?"
])
var app = null
var socket = openSocket("http://localhost:8080/mp", {
            jsonp: false,
            reconnection: true,
            reconnectionDelay: 500,
            reconnectionAttempts: Infinity,
            transports: ["websocket"]
        })

export default class App extends React.Component {
    constructor(props) {
        super(props)
        app = this

        socket.on("connect", function() {
            console.log("connected")
            socket.emit("message", "test")
        })

    }

    render() {
        app = this
        return (
            <View style={styles.container}>
                <Text>Open up App.js to start working on your app!</Text>
            </View>
        )
    }
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: "#fff",
        marginLeft:20,
        marginTop: 40,
    }
})

1 Ответ

0 голосов
/ 10 февраля 2019

Оказывается, проблема в том, что я отправлял событие message на сервер, но сервер прослушивал событие chat message (я перепутал имя события и его функцию).Даже в этом случае связь между сервером и клиентом все еще не работает, так что я думаю, что это больше отладка: P

...