J'essaie de connecter socket.io et express.js ensemble:
var socket = require('./socket_chat/socket.js');
var express = require('express'),
app = module.exports.app = express();
var io = require('socket.io').listen(app);
app.use(express.static(__dirname + '/app'));
io.sockets.on('connection', socket);
Sur la ligne: var io = require('socket.io').listen(app);
Je reçois une erreur:
Error: You are trying to attach socket.io to an expressrequest handler function. Please pass a http.Server instance.
Il ne semble rien y avoir sur SO/google à propos de cette erreur ...
Vous devez utiliser le module http
:
var http = require('http');
var express = require('express'),
app = module.exports.app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server); //pass a http.Server instance
server.listen(80); //listen on port 80
//now you can use app and io
Plus de détails vous pouvez trouver dans une documentation: http://socket.io/docs/#using-with-express-3/4
Vous pouvez le faire sans utiliser le module http
app.listen renvoie une instance de serveur que vous pouvez utiliser pour socket.io
const express = require('express');
const app = express();
const server = app.listen(port, () => {
console.log("Listening on port: " + port);
});
const io = require('socket.io')(server);