Ciao、私はwebRTCの多対多のビデオ会議システムを実装していますが、実際にはすでに実装しています。シグナリングサーバーとしてsocket.IOを使用しており、すべてが順調に進んでいます。htmlファイルの提供にEnterpriseDBApacheを使用しています。ポート(8081)とポート(3000)でsocket.IOを提供するためのNode.jsで、ローカルホストでチャームのように機能し、エラーはありません。私のISSUEはパブリックIPで外部アクセスを提供しています。友達とテストしています。これらのブラウジングサービス:www.browserstack.comおよびwww.browserling.com(試用版)。
www.browserstack.comでは、mozilla42またはchrome 47)のいずれかですべてが正常に機能しています。
www.browserling.comで、これらのエラーが発生しました
Firefox 41:ReferenceError:ioが定義されていません
Chrome 45:リソースの読み込みに失敗しました http:// localhost:3000/socket.io/socket.io.js net :: ERR_CONNECTION_REFUSED Uncaught ReferenceError:io is not defined
友達と一緒に、www.browserling.comと同じ問題が発生していますが、友達はPCサーバーへの接続に最新のブラウザーバージョン(Chrome47およびFirefox42)を使用しています。
これはブラウザバージョンの問題ではないと思います。問題はsocket.io.jsファイルの提供にあります。最後に、私のコードは次のとおりです。
この問題を解決するための重要なことだけを示しています。
///NODE.JS DIRECTORY
////////////////////serverside.js
var port = 3000;
var io = require('socket.io').listen(port);
io.sockets.on('connection', function (socket){.........}
///Apache DIRECTORY
////////////////////clientside.js
//Connect to signalling server
var socket = io.connect("http://localhost:3000");
////////////////////avq.html
<!DOCTYPE html>
<html lang="es">
<head><meta charset="UTF-8">
</head>
<body>
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script src="js/clientside.js"></script>
</body>
</html>
誰かが試してみたい場合、これは私のサーバーURLです: http://201.209.104.33:8081/webrtcexamples/avq.html
localhost
は、要求しているコンピューターと同じコンピューターを指す特別なホスト名です。したがって、自分のコンピュータとは別のコンピュータを使用してlocalhost
に接続しようとすると、自分のコンピュータではなく自分のコンピュータに接続しようとします。サーバーがコンピューター上で実行されていないため、明らかに「接続が拒否されました」というエラーが発生します。
localhost
をグローバルにアクセス可能なアドレス(ドメイン名またはIPアドレス)に置き換える必要があります。これは、ルーターに外部IPアドレスを、このポートのサーバーを実行しているコンピューターにマップさせる必要があることも意味します(そうしないと、ルーターはサーバーではなくルーターに接続します)。
io.connect("http://201.209.104.33:3000");
の代わりにio.connect("http://localhost:3000");
を試してください
編集
使用しているサーバーでソケットを実行する必要があります。したがって、PCで実行すると、友達のPCには表示されません。これは、localhost
に接続すると、自分のPCのlocalhost
に接続しようとするためです。あなたのものではありません。
以前も同じ問題がありました。誰もが接続できるように、サーバーから実行する必要があります。