Есть ли способ вызвать событие подключения socket.io из NodeJS? - PullRequest
1 голос
/ 19 марта 2019

Я пробую кое-что с socket.io на NodeJS и не могу понять, как вызвать сокет (только) с NodeJS.

До сих пор я использовал socket.io, вызываяэто из внешнего интерфейса, но мне интересно, возможно ли сделать то же самое, что я сделал во внешнем интерфейсе, но на этот раз со стороны nodeJS (на стороне сервера).

Я думаю, это невозможно, потому что это требуетсясвоего рода соединение (мне нравится называть это TCP-соединением, но я не уверен, верно ли это или нет), и без второго участника в соединении сокет не будет работать. Это мое предположение.

Итак, что я сейчас делаю:

app.js (файл сервера)

 ...
 const ioLib = require('./path/io.js')(io);
 ...
 ...
 ...

путь / io.js (файл сокета)

 module.exports = function(io){

 io.on('connection', async function(socket) {
 console.log('socket talks : a user connected');
 ...
 ...
 });

 module.exports.io = io;

 }

И из файла file.ejs я делаю:

var socket = io("url");

Итак, давайте назовем это схемой, я делаю следующее:

Когда я захожу на эту веб-страницу, событие 'connection'срабатывает в розетках.У меня вопрос, и я пытаюсь сформулировать это как можно проще: как я могу сделать то же самое, но без веб-страницы? Можно ли вызвать сокеты внутри NodeJS?

Что вы думаете

1 Ответ

0 голосов
/ 21 марта 2019

Возможно подключить сервер Socket.IO из отдельного приложения Node.js (не имеет значения, где он работает), а не из веб-интерфейса, доступ к которому осуществляется через веб-браузер.Для этого вам следует использовать socket.io-client.Пример использования клиента может быть следующим:

// Node.js app: client.js
const io = require('socket.io-client');
const socket = io.connect('http://SERVER_IP:SERVER_PORT', {
    reconnect: true
});

socket.on('connect', function (socket) {
    console.log('Connected to the server!');    
});

socket.emit('connected', 'Hi from the client side!');  

В этом случае ваше серверное приложение должно включать в себя что-то следующее:

// Node.js app: server.js
io.on('connection', function(socket) {
   console.log('socket talks: a user connected');

   // Print the message that comes from the socket client
   socket.on('connected', function (msg) {
      console.log(msg);
   });
});   

Как вы можете видеть выше, в основном,Архитектура остается такой же, как сервер-клиент.Теперь давайте сделаем еще один шаг и поместим все эти коды в один файл js, и посмотрим, как это работает:

// server/client together: crazy-socketapp.js
const io_server = require('socket.io').listen(3030);
io_server.sockets.on('connection', function (socket) {
    console.log('A client is connected!');
    socket.on('connected', function (msg) {
        console.log(msg);
    });
});

const io_client = require('socket.io-client');
const socket = io_client.connect('http://localhost:3030', {
    reconnect: true
});

socket.on('connect', function (socket) {
    console.log('Connected to the server!');    
});

socket.emit('connected', 'Hi from the client side! ');

Вывод приложения:

> A client is connected! 
> Connected to the server! 
> Hi from the client side!

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...