我的客户端 socket.io 在哪里?

2024-05-20

我使用 Express 和 React-Engine 创建了一个同构 React 应用程序。现在我正在尝试连接socket.io。在快速设置中我有

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
...
app.set('views', __dirname + '/public/views');

app.get('/', function(req, res) {
  res.render(req.url, {
    title: 'React Engine Express Sample App',
    name: 'something'
  });
});
...
var server = app.listen(3000);

io.on('connection', function (socket) {
  socket.on('logIn', function (data) {
      console.log(data);     
  });
});

在前端我有一个 React 组件布局

var React = require('react');
var socket;

module.exports = React.createClass({
    componentDidMount: function () {       
        socket = io();        
    },
    clicked: function () {
        socket.emit('logIn', {name: "Dan"});    
        console.log("clicked");
    },
    render: function render() {
        return (
          <html>
            <body>
              {this.props.children}
              <button onClick={this.clicked}>click me</button>
              <script src="/socket.io/socket.io.js"></script>
            <script src='/bundle.js'></script>
            </body>            
          </html>
        );
    }
});

项目结构是

index.js(express app)
package.json
/public
    bundle.js(generated by webpack)
    index.js(front-end routing setup)
    routes.jsx
    /views
        app.jsx
        layout.jsx(where the front end really starts)

从我所看到的一切来看,这应该可行。 Express 应用程序应该托管 socket.io 文件,以便我可以在前端获取它。尽管如此,这还是 localhost:3000/socket.io/socket.io.js 都不起作用。我什至尝试了一些不同的相对路径。如何找到我的客户端 socket.io 文件?


我正在使用的有效序列是这样的:

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

我不确定你的哪个方面可能导致问题,但它与此不同,特别是在你如何设置服务器方面(你为你的服务器分配了两个不同的值)server变量(看起来不正确)以及如何初始化 socket.io。

另外,我见过一些人在服务器端安装了客户端版本的 socket.io,而不是服务器版本,这显然不会让您能够提供 /socket.io/socket.io.js 文件,所以这就是值得检查。

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

我的客户端 socket.io 在哪里? 的相关文章

随机推荐

  • setSelected() 与 JRadioButton r[]=new JRadioButton[3] 不起作用[重复]

    这个问题在这里已经有答案了 在这里我做了一个虚拟程序 import javax swing import java awt import java awt event class MyClass1 implements ActionList
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • Kivy:获取在Python中添加的小部件内的父级

    如何获取对不是由 kvlang 添加而是在 python 中添加的小部件内的父级的引用 通常你只需调用self parent然而这会返回Null如果小部件在 python 中添加到父级 一个例子 import kivy kivy requi
  • .NET 标准与 .NET 核心

    我已经了解了 NET Standard 和 NET Core 之间的区别 但我真的不知道区别是什么 或者何时选择 NET Standard 库项目以及何时选择 NET Core 库项目 我读到 NET Standard 是为了确保一组 AP
  • Objective Flickr 照片上传错误

    我正在使用 ObjectiveFlickr 库将照片从我的 iPhone 应用程序上传到 Flickr 我可以授权该应用程序并执行一般请求 但在尝试上传照片时遇到错误 要上传的照片是使用 AVFoundation 捕获的图像 这是相关代码
  • 使用 PEM 证书的 HTTPS 连接

    我正在尝试使用 PEM 证书发布 HTTPS 请求 如下所示 import httplib CERT FILE path certif pem conn httplib HTTPSConnection 10 10 10 10 443 cer
  • 为什么 Jersey 控制器未检测到我的方面(使用自定义注释)?

    我想在 Jersey 控制器上创建一个方面来测量服务执行所需的时间 我正在与我的切入点作斗争 因为它没有被检测到 而且我的方面永远不会启动 我尝试过使用很多切入点 例如 execution Monitor execution public
  • 单屏上支持多种语言的 Android 字体

    我是安卓新手 我正在实施一个应用程序 该应用程序将采用英语和乌尔都语两种语言 基本上会有一些阿拉伯语文本 其含义将根据用户选择的语言为英语或乌尔都语 我想更改阿拉伯语文本的字体 如果我在整个应用程序中应用字体 它也会改变乌尔都语和英语的外观
  • 正则表达式 数字字符串 数字字符串循环

    我的字符串是 str Move 10 Casio Watch 20 Apple Iphone 100 Apple Macbook to store 我用过了 preg match all 0 9 str matches 但它只匹配产品名称的
  • Mongod 错误(用自制程序安装)

    我已经安装了 mongodb brew install mongodb 已创建文件夹 mkdir p data db 处理权限 sudo chown R id un data db Run mongod 错误日志 2018 01 06T14
  • UICollectionView 未出现

    我正在尝试设置UICollectionView 以编程方式在我的视图控制器中扩展UIViewController 由于某种原因 我的收藏视图根本没有显示 以下是我所拥有的 为什么没有出现 我将它连接到委托和数据源并将其添加为子视图self
  • 是否可以在单个 POM 中执行两个不同的 maven exec-maven-plugin

    我使用执行以下代码mvn exec java com mycompany FooServer 我想添加另一个我可以执行的服务器mvn exec java com mycompany BarServer 我如何在单个 pom 文件中做到这一点
  • Python 原生协程和 send()

    基于生成器的协程有一个send 方法 允许调用者和被调用者之间进行双向通信 并从调用者恢复生成的生成器协程 这是将生成器转变为协程的功能 虽然新本地人async await协程为异步 I O 提供了卓越的支持 我不知道如何获得相当于send
  • 配置 HttpClientFactory 以使用当前请求上下文中的数据

    随着新HttpClientFactory https www stevejgordon co uk introduction to httpclientfactory aspnetcore在 ASP NET Core 2 1 中 使用基本
  • 如何在 mongoid 中使用 or 条件进行查询

    如何在 Mongoid 中使用 or 条件进行查询 这是 OR 在 mongoid 中查询 如果你想要像下面这样的查询 select from user where id 10 or name hitesh 在带有 mongoid 的 Ra
  • Android ACTION_SEND 意图未填充主题或正文

    我的应用程序中有代码可以让用户向开发人员发送电子邮件 它应该预先填充 收件人 字段 主题 字段和 正文 字段 然而 当我运行时 它会填充 收件人 但会忽略其他额外内容 例如主题 正文和选择器文本 我在两台测试设备上看到了这种行为 一台运行
  • 编码:类型错误:write() 参数必须是 str,而不是 bytes

    我对 python 有初步的了解 但不清楚处理二进制编码问题 我正在尝试运行 firefox webextensions 示例中的示例代码 其中 python 脚本发送由 javascript 程序读取的文本 我不断遇到编码错误 蟒蛇代码是
  • 从返回堆栈返回后,片段不刷新内容

    我有一个ZooFragment其中包含一个ViewPager This ViewPager有三个孩子 LionFragment LeopardFragment and TigerFragment 每个子节点都可以请求事务来调用新的ZooFr
  • 在画布上绘制多个矩形

    我试图在鼠标移动时在画布上添加多个矩形 但是当我在图像上绘制矩形时 画布上的背面图像也会被清除 我不想删除它 我想要画布上有多个矩形而不清除画布图像 请检查下面的 JavaScript 代码 var canvas document getE
  • 我的客户端 socket.io 在哪里?

    我使用 Express 和 React Engine 创建了一个同构 React 应用程序 现在我正在尝试连接socket io 在快速设置中我有 var express require express var app express va