簡體   English   中英

socket.io輪詢返回Laravel 500 NotFoundHttpException

[英]socket.io polling returns Laravel 500 NotFoundHttpException

我正在嘗試設置一個node.js socket.io服務器,但它不起作用。 似乎它正在嘗試首先輪詢node.js服務器,但是由於我將Laravel用於大多數應用程序,因此將其Not FoundHttpException並返回Not FoundHttpException

Node.js服務器代碼:

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

var io = require('socket.io')(server);

var redis = require('ioredis');
var Redis = new redis();

Redis.subscribe('live-updates');

Redis.on('message', function(channel, message) {
    message = JSON.parse(message);

    console.log(channel, message);
    io.emit('foo', message.data);
});

io.on('connection', function() {
    console.log('foo');
});

客戶代碼:

var socket = io.connect('http://myapp.app');

socket.on('foo', function(data) {
    console.log(data);
});

這一切都是在客戶端觸發以下HTTP長輪詢請求:

http://myapp.app/socket.io/?EIO=3&transport=polling&t=1447468676627-0

響應:

Server 500 error, #29 Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException in /home/vagrant/myapp/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php:161

好吧,當然沒有找到。 我期望socket.io嘗試創建websocket連接-不將長時間輪詢的HTTP請求發送到未定義的Laravel路由。 我究竟做錯了什么?

您實際上不需要在這里表達,因為您什么也不顯示,只是簡單的http服務器。 我認為您的問題是服務器不監聽。

另外,節點應該偵聽與80不同的端口,否則您的http服務器將處理該請求並導致該500錯誤。

檢查下面的代碼。

服務器端

var app = require('http').createServer(handler);
var io = require('socket.io')(app);

app.listen(3000);

客戶端

var socket = io('http://localhost:3000');

確保您從CLI運行節點

node index.js

並用您的腳本名稱替換index.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM