Python側でaiortcを使用して、PythonアプリからWebサービスへのwebRTC接続を作成し、Webサービス側でjsを表現しようとしています。localhost で Web サービスをホストしている場合は問題ありませんが、サーバーでホストしている場合は問題ありません。オンラインでホストされている場合でも、Web ページに問題なくアクセスできます。webRTC 接続を確立しようとすると、次の非常に一般的な例外が発生します
socketio.exceptions.ConnectionError: Connection refused by the server
。
Pythonコードの関連部分であると私が思うのは次のとおりです。
import asyncio
import dataclasses
import os
import socketio
from pathlib import Path
from aiortc import RTCPeerConnection, RTCSessionDescription
from data_streams.StreamingTrack import StreamingTrack
# Socket.io details
NODEJS_URL = 'something.something.nl'
NODEJS_PORT = '4000'
ROOT = os.path.dirname(__file__)
CLASSROOM_ID = "defaultClassroom"
sio = socketio.AsyncClient()
await sio.connect("http://" + NODEJS_URL + ":" + NODEJS_PORT)
そして、これが関連するjsコードであると私が信じているものです:
const indexRouter = require('./routes/index');
const usersRouter = require('./routes/users');
const app = express();
app.options('*', cors());
app.set('port', (process.env.PORT || 8080));
// initiating the socket server
const port = 4000;
const server = http.createServer(app);
const io = require('socket.io')(server);
app.use(express.static(__dirname + '/public'));
io.sockets.on('error', (e) => console.log(e));
io.sockets.on('connect_error', (err) => {
console.log(`connect_error due to ${err.message}`);
});
追加のコードが必要な場合は、提供できます。
ファイアウォールが無効になっているので、それが問題ではないと思います。接続できない理由について何か提案をいただければ幸いです。