Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ SocketIo Ρ Nodejs , Express server ΠΈ MongoDB , Ρ ΡΠ»Π΅Π΄ΠΈΠ» Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ. ΠΎΠ½ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΊΠΎΠ³Π΄Π° Ρ ΡΠ΄Π΅Π»Π°Π» Π·Π°ΠΏΡΠΎΡ Http, Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ Π½ΠΎΠ²ΡΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ.
socket.io.js: 7370 ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ WebSocket ΠΊ
'ws: // localhost: 28232 / socket.io /? userId = userAmr & EIO = 3 & transport = websocket & sid = wNTTgrUD-PSeNaIcAAAF '
Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ: ΠΎΡΠΈΠ±ΠΊΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠΊΠΎΠΏΠΎΠΆΠ°ΡΠΈΡ WebSocket: Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΡΠ²Π΅ΡΠ°:
400
Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π΄ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Http ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
Π― ΠΎΡΠ»Π°Π΄ΠΈΠ» Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Socket ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ Π·Π°ΠΏΡΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅ΡΠ° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ errorCode: 1
ΠΡΠΎ ΠΌΠΎΠΉ ΠΊΠΎΠ΄
/**
* Create Express server.
*/
const app = express();
// API endpoint
app.get('/api/test',(req,res)=>{
res.status(200).send({test:"test"});
});
/**
* Init socket
*/
const server = require('http').Server(app);
const io = require('socket.io')(server);
io.on('connection', (socket) => {
// emit message to group
socket.on('emitMessage', (data, callback) => {
io.emit('emitMessage', data);
});
});
ΠΡΠΎ ΠΌΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ΅ΠΊΠ° https://stackoverflow.com/q/47375814/6786941
Π― ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠ°ΠΊΠ΅Ρ express-status-monitor
Π²Π΅Π» ΡΠ΅Π±Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ Π΅Π³ΠΎ, ΠΈ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ
// comment these lines, as they making the issue
// const expressStatusMonitor = require('express-status-monitor');
// app.use(expressStatusMonitor());
ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄:
let app = require('express')();
// these two lines were making the problem, please comment them. if you want to reproduce the problem enable them again
// const expressStatusMonitor = require('express-status-monitor');
// app.use(expressStatusMonitor());
let http = require('http').Server(app);
let io = require('socket.io')(http);
let port = process.env.PORT || 3000;
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
app.get('/api/v0/availabilities',(req,res)=>{
res.status(200).send({test:"test"});
});
io.on('connection', (socket) => {
// emit message to group
socket.on('emitMessage', (data) => {
io.emit('emitMessage', data);
});
});
http.listen(port, function(){
console.log('listening on *:' + port);
});
ΠΡΠΎ ΠΌΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ΅ΠΊΠ° https://stackoverflow.com/q/47375814/6786941
ΠΡΠΎ ΠΌΠΎΠΉ ΠΎΡΠ²Π΅Ρ Π½Π° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° https://stackoverflow.com/a/47411701/6786941
@almgwary ΠΡ, ΡΡΡ, ΡΠ»ΠΈΡΠΊΠΎΠΌ Ρ ΠΎΡΠΎΡΠΈ. Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π― ΡΠ΄Π°Π»ΠΈΠ» expressStatusMonitor, ΠΈ ΠΎΠ½ ΠΎΡΠ»ΠΈΡΠ½ΠΎ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π»! Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ! ΠΠΎΡΠ»Π΅ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄Π½Π΅ΠΉ ΠΏΠΎΠΈΡΠΊΠ° Ρ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΡΠΌΠΎΠ³ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ Π²Π°ΡΠΈΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΎΠ½Π½Ρ!
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π― ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠ°ΠΊΠ΅Ρ
express-status-monitor
Π²Π΅Π» ΡΠ΅Π±Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ Π΅Π³ΠΎ, ΠΈ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ
ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄:
ΠΡΠΎ ΠΌΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ΅ΠΊΠ° https://stackoverflow.com/q/47375814/6786941
ΠΡΠΎ ΠΌΠΎΠΉ ΠΎΡΠ²Π΅Ρ Π½Π° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° https://stackoverflow.com/a/47411701/6786941