Почему я не получаю ответа от события подключения socket.io - PullRequest
0 голосов
/ 21 июня 2020

Я только начал с socket.io и на практике я хотел создать сервер, вывод которого будет сообщать мне «Пользователь подключен» каждый раз, когда устанавливается соединение с клиентом. Я думал, что соединение устанавливается просто после запуска сервера и перехода к localhost:5000. После этого я бы увидел сообщение о выходе из соединения в моей консоли.

const express = require('express')
const app = express()

app.get('/', (req, res) => {
  res.send('I am alive')
})

PORT = process.env.PORT || 5000 

const server = app.listen( PORT, 
    () =>{ console.log(`Listening to http://localhost:${PORT}`)})

const io = require('socket.io')(server)

io.on('connection', function(socket) {
    console.log('A user connected');})

Для этого процесса я набираю node server.js, жду, пока не появится сообщение Listening to http://localhost:5000, а затем I go на страницу. Но когда я перехожу на страницу, я не вижу консольного сообщения. Нужен ли для появления сообщения файл html? Или я не вижу важного шага? Я видел несколько руководств, но все они используют файл html, и я хотел избежать этого шага. Большое спасибо!

Ответы [ 2 ]

1 голос
/ 21 июня 2020

На сервере, написав этот код

io.on('connection', function(socket) {
     console.log('A user connected');
 })

, вы слушаете соединение, и кто-то где-то должен подключиться к сокету этого сервера по тому же URL-адресу, что и ваш сервер, например, такой

var socket = require('socket.io-client')('http://localhost:5000');
socket.on('connect', function () {
     socket.on("FromAPI", data => {
        setResponse(data);
     });
     socket.emit("FromAPI")
 }

Когда вы подключаетесь к сокету в любом месте html или любого другого кода, console.log () будет печатать данные на сервере

0 голосов
/ 21 июня 2020

Код, которым вы поделились, является частью сервера, который вам также нужен для настройки клиента.

Клиентская часть:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>
<script>
    var socket = io('http://localhost:<PORT>');
</script>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...