Saya menggunakan SocketIo dengan Nodejs , Express server dan MongoDB , saya mengikuti dokumentasi . itu berfungsi dengan baik saat menghubungkan beberapa klien, mereka dapat mengirim pesan satu sama lain tanpa masalah. ketika saya membuat permintaan Http, saya tidak dapat menghubungkan klien baru dan mendapatkan kesalahan ini.
socket.io.js:7370 Koneksi WebSocket ke
'ws:// localhost:28232/socket.io/?userId=userAmr&EIO=3&transport=websocket&sid=wNTTgrUD-PSeNaIcAAAF '
gagal: Kesalahan selama jabat tangan WebSocket: Kode respons tak terduga:
400
pengguna lain yang terhubung sebelum permintaan Http dapat terus mengirim pesan tanpa masalah.
Saya men-debug perpustakaan Socket dan menemukan permintaan soket klien pergi ke fungsi koneksi lalu nyalakan kode kesalahan: 1
Ini kode saya
/**
* 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);
});
});
Ini pertanyaan saya tentang stack overflow https://stackoverflow.com/q/47375814/6786941
saya menemukan masalah, paket express-status-monitor
membuat perilaku yang salah ini.
coba hapus, dan itu akan bekerja dengan sempurna
// comment these lines, as they making the issue
// const expressStatusMonitor = require('express-status-monitor');
// app.use(expressStatusMonitor());
Kode terakhir:
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);
});
Ini pertanyaan saya tentang stack overflow https://stackoverflow.com/q/47375814/6786941
Ini jawaban saya tentang stack overflow https://stackoverflow.com/a/47411701/6786941
@almgwary Anda, Pak, Apakah terlalu baik. Saya menghadapi masalah yang sama persis. Saya menghapus expressStatusMonitor dan itu berfungsi seperti pesona! Terima kasih! Setelah berhari-hari mencari, akhirnya saya bisa menyelesaikan ini setelah menggunakan saran Anda. Terima kasih banyak!
Komentar yang paling membantu
saya menemukan masalah, paket
express-status-monitor
membuat perilaku yang salah ini.coba hapus, dan itu akan bekerja dengan sempurna
Kode terakhir:
Ini pertanyaan saya tentang stack overflow https://stackoverflow.com/q/47375814/6786941
Ini jawaban saya tentang stack overflow https://stackoverflow.com/a/47411701/6786941