web-dev-qa-db-ja.com

ERR_CONNECTION_REFUSED http:// localhost:3000 / socket.io / socket.io.js

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アドレスを、このポートのサーバーを実行しているコンピューターにマップさせる必要があることも意味します(そうしないと、ルーターはサーバーではなくルーターに接続します)。

8
jcaron

io.connect("http://201.209.104.33:3000");の代わりにio.connect("http://localhost:3000");を試してください

編集

使用しているサーバーでソケットを実行する必要があります。したがって、PCで実行すると、友達のPCには表示されません。これは、localhostに接続すると、自分のPCのlocalhostに接続しようとするためです。あなたのものではありません。

以前も同じ問題がありました。誰もが接続できるように、サーバーから実行する必要があります。

2
Haring10