Как я могу подключить сокет к серверу? - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь создать сокет в файле 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").

1 Ответ

0 голосов
/ 26 декабря 2018

Как указано в doc , необходимо настроить клиент для подключения к локальному хосту, а затем при подключении вы получите сообщение:

<script>
  var socket = io.connect('http://localhost');  // <--- HERE MAN
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...