J'ai créé une application React isomorphe en utilisant Express et React-Engine. En ce moment j'essaie de connecter socket.io. Dans la configuration express JeOù est mon côté client 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);
});
});
À l'avant, j'ai un composant React Mise en page
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>
);
}
});
La structure du projet est
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)
De tout ce que j'ai vu qui devrait fonctionner. L'application express devrait héberger les fichiers socket.io afin que je puisse l'attraper sur le frontal. Malgré cela, ni ceci ni localhost: 3000/socket.io/socket.io.js ont fonctionné. J'ai même essayé quelques chemins relatifs différents. Comment puis-je trouver mes fichiers socket.io côté client?
Avez-vous démarré le serveur de noeud? 'noeud index.js' –