2017-04-06 28 views
0

私は基本的なチャットhtmlプログラムを構築しようとしています。 これをテストするノードサーバーをセットアップしましたが、htmlページにアクセスするとソケットエラーが発生します。 node.jsで作業して初めてノードサーバーをセットアップするのは間違いでした。Socket.ioエラー - ERR_CONNECTION_TIMED_OUT

これを見ていただいた皆様、ありがとうございます!

var express = require('express'); 
 
var app = express(); 
 
var server = require('http').createServer(app); 
 
var io = require("socket.io").listen(server); 
 

 
var socket = io.listen(1223, "1.2.3.4"); 
 
server.listen(process.env.PORT || 3000); 
 

 
console.log('Server is running...'); 
 
var people = {}; 
 

 
app.get('/', function(req, res){ 
 
\t res.sendFile(__dirname + '/index.html'); 
 
}) 
 

 
// When connecting 
 
socket.on("connection", function(client) { 
 
\t client.on("join", function(name){ 
 
\t \t people[client.id] = name; 
 
\t \t client.emit("update", "You have connected to the server."); 
 
\t \t socket.sockets.emit("update", name + " has joined the server."); 
 
\t \t socket.sockets.emit("update-people", people); 
 
\t }); 
 

 
// When sending 
 
\t client.on("send", function(msg){ 
 
\t \t socket.sockets.emit("chat", people[client.id], msg); 
 
\t }); 
 

 
// When disconnecting 
 
\t client.on("disconnect", function(){ 
 
\t \t socket.sockets.emit("update", people[client.id] + " has left the server."); 
 
\t \t delete people[client.id]; 
 
\t \t socket.sockets.emit("update-people", people); 
 
\t }); 
 
});
<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <!-- Latest compiled and minified CSS --> 
 

 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> 
 
    <script src="/socket.io/socket.io.js"></script> 
 
</head> 
 
    <script> 
 
    
 
     $(document).ready(function(){ 
 
     var socket = io.connect("1.2.3.4:1223"); 
 
     $("#chat").hide(); 
 
     $("#name").focus(); 
 
     $("form").submit(function(event){ 
 
      event.preventDefault(); 
 
     }); 
 
     
 
     $("#join").click(function(){ 
 
      var name = $("#name").val(); 
 
      if (name != "") { 
 
       socket.emit("join", name); 
 
       $("#login").detach(); 
 
       $("#chat").show(); 
 
       $("#msg").focus(); 
 
       ready = true; 
 
      } 
 
     }); 
 

 
     $("#name").keypress(function(e){ 
 
      if(e.which == 13) { 
 
       var name = $("#name").val(); 
 
       if (name != "") { 
 
        socket.emit("join", name); 
 
        ready = true; 
 
        $("#login").detach(); 
 
        $("#chat").show(); 
 
        $("#msg").focus(); 
 
       } 
 
      } 
 
     }); 
 

 
     socket.on("update", function(msg) { 
 
      if(ready) 
 
       $("#msgs").append("" + msg + ""); 
 
     }) 
 

 
     socket.on("update-people", function(people){ 
 
      if(ready) { 
 
       $("#people").empty(); 
 
       $.each(people, function(clientid, name) { 
 
        $('#people').append("" + name + ""); 
 
       }); 
 
      } 
 
     }); 
 

 
     socket.on("chat", function(who, msg){ 
 
      if(ready) { 
 
       $("#msgs").append("" + who + " says: " + msg + ""); 
 
      } 
 
     }); 
 

 
     socket.on("disconnect", function(){ 
 
      $("#msgs").append("The server is not available"); 
 
      $("#msg").attr("disabled", "disabled"); 
 
      $("#send").attr("disabled", "disabled"); 
 
     }); 
 

 
// Sending the message (either by button click or enter) 
 
     $("#send").click(function(){ 
 
      var msg = $("#msg").val(); 
 
      socket.emit("send", msg); 
 
      $("#msg").val(""); 
 
     }); 
 

 
     $("msg").keypress(function(e){ 
 
      if (e.which == 13) { 
 
      var msg = $("msg").val(); 
 
      socket.emit("send", msg); 
 
      $("#msg").val(""); 
 
      } 
 
     }); 
 

 
     }); 
 

 
    </script> 
 

 
<body> 
 
    <div class="container"> 
 

 
<div class="row"> 
 
     <div class="span2"> 
 
      <ul id="people" class="unstyled"></ul> 
 
     </div> 
 
     <div class="span4"> 
 
      <ul id="msgs" class="unstyled"> 
 
     </div> 
 
     </div> 
 

 
     <div class="row"> 
 
     <div class="span5 offset2" id="login"> 
 
      <form class="form-inline"> 
 
      <input type="text" class="input-small" placeholder="Your name" id="name"> 
 
      <input type="button" name="join" id="join" value="Join" class="btn btn-primary"> 
 
      </form> 
 
     </div> 
 
     <div class="span5 offset2" id="chat"> 
 
      <form id="2" class="form-inline"> 
 
      <input type="text" class="input" placeholder="Your message" id="msg"> 
 
      <input type="button" name="send" id="send" value="Send" class="btn btn-success"> 
 
      </form> 
 
     </div> 
 
     </div> 
 

 
     </div> 
 

 
    </body> 
 
</html>

+0

あなたが投稿できます正確なエラーメッセージも表示されますか? – Himal

+0

コンソールで:GET http://1.2.3.4:1234/socket.io/socket.io.js localhost /:5 net :: ERR_CONNECTION_TIMED_OUT – JonasSH

答えて

0

さまざまlisten呼び出しを混同しました。

var server = require('http').createServer(app); 
var io = require("socket.io").listen(server); 
var socket = io.listen(1223, "1.2.3.4"); 
server.listen(process.env.PORT || 3000); 

3行目は期待した効果がありません。 ioはそれ自身を聴いていません。これは、3000

はむしろサーバー

var server = require('http').createServer(app); 
var socket = require("socket.io").listen(server); 
server.listen(process.env.PORT || 3000); 

にこれを使用してクライアントにポート3000(またはPORT環境変数を経由して設定されたポートに接続するポートで待機しているhttpサーバを使用しています。

​​

あなたはsocket.ioための専用ポートをリッスンする場合は、第二のポートでリッスン秒httpサーバを作成し、socket.ioする1つをバインドする必要があります。

+0

これはこのように見えますが、動作しません:var express = require( 'express'); var app = express(); var server = require( 'http')。createServer(app); var socket = io.connect( "your.domain:3000"); var io = require( "socket.io")。listen(server); server.listen(process.env.PORT || 3000); console.log( 'サーバーは実行中です...'); var people = {}; app.get( '/'、機能(REQ、RES){ \t res.sendFile(__ dirnameは+ '/index.htmlが');} ) – JonasSH

+0

もちろん、これは動作しません!このコードは 'var socket = io.connect(" your.domain:3000 ");'はクライアント側のものです!もちろん、あなたのドメイン名やIPアドレスで 'your.domain'を置き換える必要があります。 –

+0

申し訳ありませんが、node.jsとサーバーの設定は完全に新しいものです。これは基本的に私がこれをやろうとしている最初の時です – JonasSH

関連する問題