2017-02-07 4 views
0

나는 노드 익스프레스 서버를 사용하고 Laravel을 사용하여 실시간 채팅 응용 프로그램을 만들려고했습니다. 여기 특급 반품/집을 가져갈 수 없습니다

Cannot GET /home 

가 home.blade.php입니다 : 여기

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(); 
    }); 

}); 

나는 다음과 같은 오류를 참조/홈 경로에 갈 때 내가 로그인 한 후 내 server.js 코드 코드 :

@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 필요 그리고 'app.get ('/ home ', (req, res) => {'하지만'ReferenceError : socket is not defined '와 같은 또 다른 오류가 발생했습니다.) – Hola

+0

@Hola 대답에 경로 정의를 추가한다고합니다. – peteb