gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:56:08 26 4
gpt4 key购买 nike

我使用 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 提供服务文件,因此值得检查。

关于javascript - 我的客户端 socket.io 在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32491737/

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