2017-03-09 63 views
0

我已經按照多個教程設置socketio-jwt,但每次似乎我沒有得到過去,這部分我:socketio,智威湯遜:連接到SocketIO,認證

Connected to SocketIO, Authenticating

任何想法?

客戶端:

<h1>Socket Connection Status: <span id="connection"></span></h1> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     socketIOConnectionUpdate('Requesting JWT Token from Laravel'); 

     $.ajax({ 
      url: 'http://localhost:8000/token?id=1' 
     }) 
     .fail(function (jqXHR, textStatus, errorThrown) { 
      socketIOConnectionUpdate('Something is wrong on ajax: ' + textStatus); 
     }) 
     .done(function (result, textStatus, jqXHR) { 

      socketIOConnectionUpdate('Connected to SocketIO, Authenticating') 
      /* 
      make connection with localhost 3000 
      */ 
      var token = result.token; 
      var socket = io.connect('http://localhost:3000'); 
      socket.on('connect', function() { 
       socket 
       .emit('authenticate', {token: token}) //send the jwt 
       .on('authenticated', function() { 
        console.log('authenticated'); 
        socketIOConnectionUpdate('Authenticated'); 
       }) 
       .on('unauthorized', function(msg) { 
        socketIOConnectionUpdate('Unauthorized, error msg: ' + msg.message); 
        throw new Error(msg.data.type); 
       }) 
      }); 
     }); 
    }); 

    /* 
    Function for print connection message 
    */ 
    function socketIOConnectionUpdate(str) { 
     $('#connection').html(str); 
    } 

服務器端

​​3210

回答

0

你可能誤會了怎麼dotenv作品,你要使用它的返回值。

Dotenv是一個零依賴項模塊,用於將.env文件中的環境變量加載到process.env中。

來源:dotenv github

相反,出口儲存位於../.env爲環境變量文件中的變量,即成爲可用的process.env的一部分。

因此,不是這樣的:

var dotenv = require('dotenv').config({path:'../.env'}); 
socketioJwt.authorize({ 
    secret: dotenv.JWT_SECRET, 
    timeout: 100 
}) 

做這個

// do this near the entry point to your application!! 
require('dotenv').config({path:'../.env'}); 

socketioJwt.authorize({ 
    secret: process.env.JWT_SECRET, 
    timeout: 100 
}) 
+0

謝謝您的回答。我仍然收到同樣的錯誤。 – Z0q