#javascript #node.js #sockets #express #socket.io
#javascript #node.js #сокеты #выразить #socket.io
Вопрос:
Я пытаюсь кое-что сделать с socket.ввод-вывод на NodeJS, и я не могу понять, как запустить сокет (только) из NodeJS.
До сих пор я использовал сокет.ввод-вывод путем вызова его из интерфейса, но мне интересно, возможно ли сделать то же самое, что я сделал во внешнем интерфейсе, но на этот раз в части NodeJS (на стороне сервера).
Я предполагаю, что это невозможно, потому что требуется своего рода соединение (мне нравится называть это TCP-соединением, но я не уверен, правда это или нет), и без второго участника соединения сокет не будет работать.Это мое предположение.
Итак, что я сейчас делаю, это :
app.js (файл сервера)
...
const ioLib = require('./path/io.js')(io);
...
...
...
path/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. вам нужен клиент узла websocket, например: npmjs.com/package/socket.io-client#nodejs-server-side-usage КСТАТИ: подумайте, нужна ли вам эта большая библиотека. WS поддерживается всеми браузерами, выпущенными за последние несколько лет.
2. Еще раз здравствуйте, сэр, спасибо, что помогли мне еще раз. Я попробую это
Ответ №1:
Возможно подключить сокет.Сервер ввода-вывода из автономного 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!
Надеюсь, это поможет!