Socket.io轮询404在Laravel

我正在尝试使用Socket.io实现一个聊天应用程序到我的Laravel应用程序。 聊天应用程序正常工作,但我有问题,使其在Laravel工作。

我尝试在端口8000上服务于Laravel,在8000上服务于聊天服务器。我使用Express 4.8.0和Socket.io 1.0.6,节点0.10.29和nodemon进行testing。

//server.js:

var express = require('express'); var app = express(); var http = require("http").Server(app); var io = require("socket.io")(http); http.listen(8000, function () { console.log('listening on *:8000'); }); app.use('/', express.static(__dirname + '/public')); app.get("/*", function (req, res){ res.sendFile(__dirname + "/index.php"); }); 

//client.js:

 var socket = io.connect('http://localhost:8000'); 

// html – 依赖关系,我尝试了所有这些:

 <script src="//cdn.socket.io/socket.io-1.0.0.js"></script> {{ HTML::script('/socket.io/socket.io.js') }} <script src="http://localhost:8000/socket.io/socket.io.js" ></script> <script src="{{asset('/socket.io/socket.io.js')}}"></script> 

然后为客户端(自己的代码)

 {{ HTML::script('js/client.js') }} 

Socket.io的CDN版本不断提供这些种类的日志:

 "GET http://localhost:8000/socket.io/?EIO=2&transport=polling&t=1407425555977-15 404 (Not Found)". 

其他的只是给一个js文件找不到日志:

 "GET http://localhost:8000/socket.io/socket.io.js 404 (Not Found)" 

//文件夹结构:

/上市

/ JS

client.js

/ node_modules

server.js

任何人都可以看到我能做些什么来使它工作?

编辑 //server.js

 var socket = require('socket.io'); var express = require('express'); var http = require('http'); var app = express(); var server = http.createServer(app); var io = socket.listen(server); io.on('connection', function (socket) { console.log("Connected server"); } server.listen(8000); 

//client.js

 var socket; $(document).ready(function () { socket = io.connect('http://localhost:8000'); }); 

//当我在日志中input全局“套接字”对象时,它会说:

 connected: false disconnected: true 

这是因为你错误地设置了它。 我有同样的确切问题(相同的错误和基本的代码布局)。 您需要在页面的基本目录(与index.php文件所在位置相同)中执行npm install socket.io --save 。 那么你必须做同样的快递( npm install express --save )。 您还必须更改您的服务器代码。 更改io的创build:

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

至:

 var socket = require('socket.io'); var express = require('express'); var http = require('http'); var app = express(); var server = http.createServer(app); var io = socket.listen(server); 

然后删除app.useapp.get因为它们不再需要这样做。 然后添加server.listen(8000); 在server.js的结尾。 对于依赖关系,请使用: <script src="//cdn.socket.io/socket.io-1.0.0.js"></script> 。 然后,运行你的服务器,在terminal上进入,并inputnode server.js 。 然后,只需连接到您的客户端。 另外,对于事件,在服务器中使用:

 io.on('connection', function (client) { client.on('someEvent', function(someVariables){ //Do something with someVariables when the client emits 'someEvent' io.emit('anEventToClients', someData); }); client.on('anotherEvent', function(someMoreVariables){ //Do more things with someMoreVariables when the client emits 'anotherEvent' io.emit('anotherEventToClients', someMoreData); }); }); 

而在你的客户端代码中:

 socket.emit('someEvent', variables); socket.on('anEventToClients', function(something){ //Code when anEventToClient is emitted from the server });