его есть способ использовать socket.io, как если бы вы использовали socket - PullRequest
0 голосов
/ 05 августа 2020

Я делаю веб-страницу, которая подключается к серверу, который находится в python везде в мире, когда он подключен к inte rnet с помощью перенаправления, я уже сделал тестовый код с клиентом сокета в python и сокет-сервер в python с портированием все работали нормально. но с socket.io и websocket, когда клиент выполняет соединение с cors, сервер видит его и принимает, но клиент не видит подтверждения. когда он работает с сокетом, можно ли использовать websocket таким же образом с теми же технологиями подпротокола и всего остального, чтобы заставить websocket и socket.io работать так же, как это уже работает с сокетом в python?

клиент socket.io

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Socket.io</title>
    </head>
 
    <body>
        <h1>Communication avec socket.io !</h1>
        <button onclick="myFunction()">Click me</button>
        <script src="node_modules/socket.io-client/dist/socket.io.js"></script>
        <script>
           var a=0;
           function myFunction() {
            if(a==0){
            a=1;
            const socket = io.connect('ws://86.205....:8080', {mode:'cors'});
            }
            };
        if(a==1){
        socket.on('connect', () => {
          alert("connect");
          socket.send("hello");
          // ...
        });
        }
        </script>
    </body>
</html>

и сервер socket.io

import eventlet
import socketio

sio = socketio.Server(cors_allowed_origins='*')
app = socketio.WSGIApp(sio, static_files={
    '/': {'content_type': 'text/html', 'filename': 'index.html'}
})

@sio.event
def connect(sid, environ):
    print('connect ', sid)

@sio.event
def my_message(sid, data):
    print('message ', data)

@sio.event
def disconnect(sid):
    print('disconnect ', sid)

if __name__ == '__main__':
    eventlet.wsgi.server(eventlet.listen(('', 8080)), app)
...