2017-01-29 2 views
0

URLの取得リクエスト?サーバを受け取ったときにsocket.ioを使用してソケットを送信しようとしています。 node.jsサーバーから送信されたjsonファイルからページをリダイレクトするボタンをロードしています。NodeJS - URLからのパラメータを受け取ったときにソケットを送信します。

get要求が受信されると、ソケットがサーバーに送信されます。問題はサーバ側で何らかの理由でソケットが受信されていないことにあります。

index.htmlを

<script src="jquery.js"></script> 
    <script src="jquery-ui.js"></script> 
    <script src="jquery-ui.min.js"></script> 
    <script src="/socket.io/socket.io.js"></script> 
    <link href="https://fonts.googleapis.com/css?family=Bungee|Roboto" rel="stylesheet"> 

    <div id="channels" style="height: 100%; width: 100%; position: absolute; top: 0%; left: 0%; background-color: #000;"></div> 

    <style> 
     html { 
      color: #fff; 
     } 
    </style> 

    <script> 

function getParameterByName(name, url) { 
    if (!url) { 
     url = window.location.href; 
    } 
    name = name.replace(/[\[\]]/g, "\\$&"); 
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 
     results = regex.exec(url); 
    if (!results) return null; 
    if (!results[2]) return ''; 
    return decodeURIComponent(results[2].replace(/\+/g, " ")); 
} 

    var socket = io(); 

    socket.on("server", function(server){ 
     console.log(server); 
     $("#channels").append("<a href='?server="+server+"'><h1>"+server+"</h1></a>"); 
    }); 

    var server = getParameterByName("server"); 
      console.log("Connecting to",server); 
      socket.emit("connect", server); 

    </script> 

server.js

process.stdout.write('\033c'); // Clear the console on startup 

var 
    express = require("express"), 
    app = express(), 
    http = require("http").Server(app), 
    io = require("socket.io")(http), 
    path = require("path"), 
    colorworks = require("colorworks").create(); 

     http.listen(8080, function(){ 
     console.log("server is running on port 8080"); 
     }); 

      app.use(express.static(__dirname + "/public2")); 

      app.get("/", function(request, response){ 
       response.sendFile(__dirname + "/public2/index.html"); 
       console.log("Served file to client"); 
      }); 

    var database = require("./json/database_original.json"); 
    var number_servers = Object.keys(database.servers).length; 

io.on("connection", function(socket){ 

    for (var i = 0; i < number_servers; i++){ 
     socket.emit("server", database.servers[i].serverJOIN); 
     console.log("Server name sent: " + database.servers[i].serverJOIN); 
    } 

    socket.on("connect", function(server){ 
     console.log("Socket received: " + server); 
    }); 

}); 

お勧めしますdatabase.json

{ 
     "servers": [ 
      { 
       "serverNAME": "server1", 
       "serverJOIN": "@server1" 
      }, 
      { 
       "serverNAME": "server2", 
       "serverJOIN": "@server2" 
      }, 
      { 
       "serverNAME": "server3", 
       "serverJOIN": "@server3" 
      } 
     ] 
    } 

答えて

0

express-ioを使うのではなく、リアルタイムでWebアプリケーションを構築している場合は、既にsocketIOが組み込まれているsailsjsを使ってみてください。

https://stackoverflow.com/a/23282360/4394814

これはあなた

役立つかもしれない、これを参照してください。
関連する問題