2017-02-07 11 views
0

私はノードエクスプレスサーバーを使って、Laravelを使ってリアルタイムチャットアプリケーションを作ろうとしていました。ここでエクスプレスが返す/家に帰ることができない

私は自宅のルート/に行くとき、私は次のエラーを参照してくださいにログインした後、私のserver.jsコードは

var app = require('express')(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 
var redis = require('redis'); 

server.listen(8000); 
io.on('connection', function (socket) { 

    console.log("client connected"); 
    var redisClient = redis.createClient(); 
    redisClient.subscribe('message'); 

    redisClient.on("message", function(channel, data) { 
    console.log("mew message add in queue "+ data['message'] + " channel"); 
    socket.emit(channel, data); 
    }); 

    socket.on('disconnect', function() { 
    redisClient.quit(); 
    }); 

}); 

次のとおりです。ここで

Cannot GET /home 

はhome.blade.phpですコード:

@extends('layouts.app') 
@section('content') 
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script> 
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script> 
<script src="https://cdn.socket.io/socket.io-1.3.4.js"></script> 
<style type="text/css"> 
    #messages{ 
     border: 1px solid black; 
     height: 300px; 
     margin-bottom: 8px; 
     overflow: scroll; 
     padding: 5px; 
    } 
</style> 
<div class="container spark-screen"> 
    <div class="row"> 
     <div class="col-md-10 col-md-offset-1"> 
      <div class="panel panel-default"> 
       <div class="panel-heading">Chat Message Module</div> 
       <div class="panel-body"> 

       <div class="row"> 
        <div class="col-lg-8" > 
         <div id="messages" ></div> 
        </div> 
        <div class="col-lg-8" > 
          <form action="sendmessage" method="POST"> 
           <input type="hidden" name="_token" value="{{ csrf_token() }}" > 
           <input type="hidden" name="user" value="{{ Auth::user()->name }}" > 
           <textarea class="form-control msg"></textarea> 
           <br/> 
           <input type="button" value="Send" class="btn btn-success send-msg"> 
          </form> 
        </div> 
       </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
<script> 
    var socket = io.connect('http://localhost:8000'); 
    socket.on('message', function (data) { 
     data = jQuery.parseJSON(data); 
     console.log(data.user); 
     $("#messages").append("<strong>"+data.user+":</strong><p>"+data.message+"</p>"); 
     }); 
    $(".send-msg").click(function(e){ 
     e.preventDefault(); 
     var token = $("input[name='_token']").val(); 
     var user = $("input[name='user']").val(); 
     var msg = $(".msg").val(); 
     if(msg != ''){ 
      $.ajax({ 
       type: "POST", 
       url: '{!! URL::to("sendmessage") !!}', 
       dataType: "json", 
       data: {'_token':token,'message':msg,'user':user}, 
       success:function(data){ 
        console.log(data); 
        $(".msg").val(''); 
       } 
      }); 
     }else{ 
      alert("Please Add Message."); 
     } 
    }) 
</script> 
@endsection 

私は8000ポートで私のプロジェクトを開始しました。私はここで何がエラーですか?

答えて

3

エクスプレスアプリには/homeのルートがありません。それは/home

にすべてGET要求を処理するために知っているので、あなたは `)私は` io.on(「接続」、機能(ソケットを削除server.js

var app = require('express')(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 
var redis = require('redis'); 

// Handle GET requests to /home 
app.get('/home', (req, res) => { 
    // handle request, respond accordingly 
}); 

server.listen(8000); 
io.on('connection', function (socket) { 

    console.log("client connected"); 
    var redisClient = redis.createClient(); 
    redisClient.subscribe('message'); 

    redisClient.on("message", function(channel, data) { 
    console.log("mew message add in queue "+ data['message'] + " channel"); 
    socket.emit(channel, data); 
    }); 

    socket.on('disconnect', function() { 
    redisClient.quit(); 
    }); 

}); 
+0

に以下のルートを追加し、アプリケーションにadd a routeに必要{ReferenceError:ソケットが定義されていないなどのエラーが発生しました} – Hola

+0

@Holaソケット関連のコードを削除したことはありません。答えに経路定義を追加すると言いました。 – peteb