Я пытаюсь создать сокет в файле client.js для связи с моим сервером.Я следовал официальной документации (https://socket.io/docs/#Using-with-Express), но безуспешно.В основном, когда я инициализирую свой сокет следующим образом:
var socket = io();
Я ожидаю сообщение от моего сервера (например, «Пользователь подключился»), но ничего не появляется, позволяя предположить, что соединение никогда не происходит.
Это проект, созданный на Glitch.Я пытался следовать документации по socket.io, простым примерам или советам по другим вопросам.Я оба попробовал предложенный сценарий перед созданием экземпляра сокета и cdn.
// server.js
//dependencies
const express = require('express');
const app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);
//listening to the port
http.listen(process.env.PORT || 3000, () => {
console.log("Listening on port " + process.env.PORT);
});
io.on('connection', function(socket){
console.log('A user has connected.');
});
// chat.html
//this is called right before </body>
<script src='https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js'></script>
<script src='/socket.io/socket.io.js'></script>
<script src='/public/client.js'></script>
//client.js
var socket = io();
client.js загружен, как и ожидалось (и консоль не выдает ошибок), но я не вижу «Пользователь подключился», как я ожидал.
Вы можете проверить полный исходный код здесь https://glitch.com/edit/#!/farlokko-advanced-node
Спасибо.
ОБНОВЛЕНИЕ:
Проблема была в неправильной инициализациимодуля passport.socketio, который вмешивался в sicket.io.Основная проблема, вероятно, заключалась в неправильном хранилище (memoryStore вместо mongo-store) и неправильном ключе для куки (express.sid вместо connect.sid).
Наконец, инициализация сокета была в порядке и должна была быть io.connect ("host here").