gpt4 book ai didi

node.js - Laravel 中的 Socket.io 轮询 404

转载 作者:搜寻专家 更新时间:2023-10-31 23:54:41 26 4
gpt4 key购买 nike

我正在尝试使用 Socket.io 实现一个聊天应用程序进入我的 Laravel 应用程序。聊天应用程序本身运行良好,但我无法让它在 Laravel 中运行。

我尝试在端口 8000 上为 Laravel 提供服务,在 8000 上为聊天服务器提供服务。我使用 Express 4.8.0 和 Socket.io 1.0.6、Node 0.10.29 和 nodemon 进行测试。

//服务器.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");
});

//客户端.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)"

//文件夹结构:

/public

/js

client.js

/Node 模块

服务器.js

任何人都可以看到我可以做些什么来让它发挥作用吗?

编辑//服务器.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);

//客户端.js

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

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

connected: false
disconnected: true

最佳答案

这是因为你设置不正确。我遇到了与您完全相同的问题(相同的错误和基本代码布局)。你需要做 npm install socket.io --save而在页面的基本目录中(与 index.php 文件所在的位置相同)。然后你必须对 express ( npm install express --save ) 做同样的事情。您还必须更改服务器代码。改变 io 的创建方式:

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> .然后,要运行您的服务器,请在终端中转到它并输入 node 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
});

关于node.js - Laravel 中的 Socket.io 轮询 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25187551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com