Laravel 中的 Socket.io 轮询 404

2024-04-11

我正在尝试使用 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

客户端.js

/节点模块

服务器.js

谁能看到我能做些什么来让它发挥作用?

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

To:

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.use and app.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
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 中的 Socket.io 轮询 404 的相关文章

随机推荐

  • iPhone/iPad:如何以编程方式获取屏幕宽度?

    您好 我想知道是否有办法以编程方式获取宽度 我正在寻找足够通用的东西来容纳 iphone 3gs iphone 4 ipad 此外 宽度应根据设备是纵向还是横向 对于 ipad 进行更改 有人知道该怎么做吗 我已经找了一段时间了 谢谢 看一
  • NHibernate:无法解析继承的 id 属性

    我定义了以下实体 public class Foo Entity
  • C# 裁剪然后缩放裁剪后的图像

    我正在尝试构建此类 在 ASP NET 站点中使用 它将裁剪给定自定义宽度 高度 X Y 的图像 然后获取结果图像并将其缩放为自定义宽度 高度 并保存在服务器返回该图像的 url 我将在查询字符串中获取这些参数 如下所示 Default a
  • 在python中将标题写入excel文件

    如何循环遍历列表中的每个元素并将其作为 Excel 标题 如果有重复的问题 请告诉我 到目前为止我还没找到 row 0 col 0 j 0 title No Hue Saturation Value Lightness AComponent
  • 过滤 ObservableCollection?

    当我将 ListBox 直接绑定到 ObservableCollection 时 我会在 ListBox 中显示实时更新 但是一旦我在混合中添加其他 LINQ 方法 我的 ListBox 就不再收到 ObservableCollection
  • 如何告诉 CPAN make 和 cc 的路径

    使用 opencsw org 软件包在 Solaris 上运行 Perl 5 10 CPAN 软件包中的 Makefile PL 无法找到正确的路径和 cc gcc 我找到了make的路径并将其设置为gmake 但我找不到cc的任何设置 我
  • bash while 循环没有按预期工作

    我知道从技术上讲 它可能会按原样工作 并且这是人们所期望的bash语言 但这不是我所期望和写的 我试图让一切尽可能简单 This is fileA Name Status Networks Image Plans HostName A PA
  • Google App Engine 数据存储区索引上限

    有人可以用简单的英语解释一下数据存储中 5000 个索引的上限吗 这是否意味着存储对象的索引列表属性不能包含超过 5000 个元素 数据存储区限制单个实体可以拥有的索引条目数量 此限制设置为每个实体 5000 个元素 您可以使用以下命令轻松
  • Julia - 迭代字典中的键组合

    有没有一种巧妙的方法来迭代字典中的键组合 我的字典有这样的值 1 gt 1 2 2 3 gt 15 3 gt 6 7 8 4 9 11 gt 3 我需要做的是获取所有长度的键组合1 n where n可能是FX 3 就像上面的例子一样 我想
  • java.sql.SQLFeatureNotSupportedException:方法 org.postgresql.jdbc4.Jdbc4Connection.isValid(int) 尚未实现。在Spring引导中

    我正在开发Spring Boot Microservices例子 在这个例子中 我使用了config server and licensing service并成功部署于docker 当我调用 REST 端点时 http localhost
  • java.lang.RuntimeException:在 android.media.MediaRecorder.start(本机方法)处启动失败

    我正在处理电话录音 当我开始录制电话时 不幸的是它停止了 它给出错误 MediaRecorder 启动失败 2147483648 我请告诉我我的代码有什么问题 这是我的代码 public class incomingcall extends
  • 将 PDF 文档打印到 esc/pos 热敏打印机

    我们正在使用 xamarin forms 开发 POS APP 因为我们需要将收据打印到通过 LAN 连接的 esc pos 热敏打印机 我们的应用程序支持多语言 通过更改代码页使用 esc pos 命令打印多种语言效果非常好 但它仅适用于
  • 使用 JAX-RS 获取服务器的基本 url

    如何使用 JAX RS 获取服务器的基本 url 基本上 当程序位于本地主机上时 我想要 http localhost 8080 当程序位于实时服务器上时 我想要 http www theSite com 我正在使用泽西岛框架 是的 您可以
  • Firestore 每日配额

    我使用开发了一个示例应用程序Angular and 火库 我大约两个月前部署了我的应用程序 从那时起一直运行良好 然而 在上周 我注意到该应用程序在使用几个小时后因 客户端离线 错误而被阻止 我发现使用2个小时后我超出了每日的阅读操作限额
  • 在负载平衡的 Tornado 站点上使用 apache 基准测试获取失败的请求,但没有记录

    也许这是一个关于 ab 的问题 而不是关于 Tornado 的问题 但有些事情没有意义 我这样运行基准测试 ab n 100 http localdomainname 2 tornados being 1 nginx Concurrency
  • python 2 doctest 为何会失败,但失败消息中的值却没有差异?

    我在 Windows 中使用 Python 2 7 9 我有一个 UTF 8 编码的 python 脚本文件 其中包含以下内容 coding utf 8 def test func u gt gt gt test func u return
  • 以 RTL 格式格式化时 TextView 内的数字会反转

    里面的数字TextView以 RTL 格式格式化时会发生反转 当数字位于文本内的末尾时TextView他们逆转了 我怎样才能以编程方式解决这个问题 例如 下面的数字是相反的 它们应该显示为 误解 像 ARABIC 这样的 RTL 语言中的数
  • 如何解决对等依赖安装问题

    我正在尝试使用 npm 安装react contenteditable 但是 eslint 的对等依赖项不允许我安装以下错误的 risal 我正在使用 Ubuntu 18 04 LTS 操作系统 这是我用来安装react contented
  • 根据控制器指定不同的_Layout.cshtml

    我创建了一个 asp mvc3 项目 我想要根据选择的控制器有不同的 Layout cshtml 这是因为控制器 1 有 2 个按钮 控制器 2 有 3 个按钮 控制器 3 有 4 个按钮 每个控制器适用于特定类型的用户 因此取决于登录 我
  • Laravel 中的 Socket.io 轮询 404

    我正在尝试使用 Socket io 实现一个聊天应用程序 进入我的 Laravel 应用程序 聊天应用程序本身运行良好 但我在 Laravel 中遇到问题 我尝试在端口 8000 上提供 Laravel 服务 并在 8000 上提供聊天服务