Нужна помощь в понимании nodejs и socket.io

Извините за довольно невежественный вопрос, но я немного запутался в отношении этих двух технологий. Я написал веб-сервер на C#, который использует Fleck, и все отлично работает, но я понял, что, вероятно, не смогу найти хостинг-провайдера, который мог бы запускать приложения .NET.

Я хочу использовать веб-сокеты, и я обнаружил, что socket.io очень популярен, но я не уверен, что это такое. Поправьте меня, если я ошибаюсь, но это так же, как написать сервер на javascript, и вы запускаете файл javascript с приложением node.exe, а затем сервер работает? Как люди находят хостинг-провайдеров, которые будут предоставлять такие услуги?

Наконец, является ли socket.io просто расширением nodejs? Вам нужно кодировать свой сервер в javascript, когда вы используете socket.io? Опять же, извините за вопросы очень новичка, но я просто пытаюсь понять несколько основных вещей, прежде чем продолжить. Спасибо.


person Ryan Peschel    schedule 06.08.2012    source источник
comment
Что касается вашего первого вопроса, я только что арендовал виртуальный сервер, который дает мне полный root-доступ, это даже дешевле, чем пакет хостинга, который у меня был раньше. Я еще не видел хостинг-провайдера, предлагающего nodejs здесь. Что касается другого вопроса, socket.io — это реализация веб-сокета, которая предлагает запасной вариант для более старого браузера, который не поддерживает веб-сокеты. Лично я также использую webgl, поэтому меня просто не интересуют старые браузеры, и я использую «обычную» библиотеку websocket.   -  person Roest    schedule 06.08.2012
comment
@Roest: виртуальный сервер звучит интригующе. Каковы плюсы и минусы такого подхода? Кроме того, учитывая, насколько популярен nodejs, как его поддержка хостинга веб-сервера может быть настолько ограниченной? Как люди его используют?   -  person Ryan Peschel    schedule 06.08.2012
comment
Плюсы и минусы, думаю, лучший ответ зависит. Для меня плюсы в том, что у меня есть полный контроль, я могу запускать любые вещи, такие как nodejs или экзотические моды apache. Минусы в том, что я должен сам управлять им (не такой уж плохой минус), и он становится дорогим, когда мне нужно больше мощности, но я не вижу этого в ближайшем будущем. Кстати, вы можете проверить этот пост stackoverflow.com/questions/3648993/   -  person Roest    schedule 06.08.2012


Ответы (2)


Есть несколько компаний, которые разместят ваше приложение узла. Это не то же самое, что ваши временные веб-хостинги, где вы предоставляете им файлы, и они обслуживают файлы для вас. При работе с узлом вы пишете фактический веб-сервер.

Некоторые из популярных вокруг приведены ниже:

@Roest: виртуальный сервер звучит интригующе. Каковы плюсы и минусы такого подхода? Кроме того, учитывая, насколько популярен nodejs, как его поддержка хостинга веб-сервера может быть настолько ограниченной? Как люди его используют?

При работе с виртуальным сервером у вас есть полный дождь над тем, что вы работаете на сервере.

Плюсы Свобода: вы можете выбрать любое программное обеспечение, которое хотите запустить на своем компьютере. Во многих случаях при работе с nodejs вам нужно, чтобы какое-то специальное программное обеспечение работало вместе с вашим приложением. В большинстве случаев это уровень вашей базы данных, какой бы вы ни выбрали.

Минусы ВАМ нужно поддерживать его. Как заявил @Roest, для большинства людей это не является большой проблемой, поскольку это напрямую связано со свободой, которую дает вам виртуальный сервер, но это то, что вам нужно учитывать.

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

Я хочу использовать веб-сокеты, и я обнаружил, что socket.io очень популярен, но я не уверен, что это такое. Поправьте меня, если я ошибаюсь, но это так же, как написать сервер на javascript, и вы запускаете файл javascript с приложением node.exe, а затем сервер работает?

Это в значительной степени именно то, что такое nodejs, или, по крайней мере, как вы его используете. Сам Nodejs — это движок Google V8 для JavaScript, работающий на вашем сервере, наряду с большим количеством библиотек и привязок C, которые позволяют вам взаимодействовать с вашим сервером так, как не позволит вам движок V8.

Это пример веб-сервера в nodejs (очень ограниченный)

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

Он просто отвечает Hello World на каждый запрос и всегда возвращает код состояния 200.

Переход от чего-то подобного к простому файловому серверу довольно прост и быстр, но несколько человек уже решили эту проблему за вас.

http://expressjs.com/ — очень мощный веб-сервер, но при этом дает вам много свобод. https://github.com/nodeapps/http-server — простой веб-сервер, я использую это в основном как инструмент командной строки для мгновенного сервера файлов через http.

Наконец, является ли socket.io просто расширением nodejs? Вам нужно кодировать свой сервер в javascript, когда вы используете socket.io? Опять же, извините за вопросы очень новичка, но я просто пытаюсь понять несколько основных вещей, прежде чем продолжить. Спасибо.

socket.io среди многих других является модулем nodejs. В зависимости от вашего определения расширения это может быть неправильное слово для использования. В большинстве случаев при использовании socket.io вы будете использовать существующий http-сервер, а затем расширять или обертывать свой сервер с помощью socket.io. Я написал предыдущее объяснение того, как это делает nowjs. Я предполагаю, что socket.io очень похож.

Чтобы ответить на основную часть этого вопроса: да, вы все равно будете писать свой код на javascript. Вы просто будете использовать API socket.io.

person travis    schedule 06.08.2012

@travis уже рассказал все, что вам нужно знать об узле и socket.io.

Я только хотел бы сказать, что вам не нужно покупать special хостинг, предназначенный для node.

Моя игра размещена на VPS с Ubuntu

Я нахожу его очень простым в развертывании и обслуживании. Есть пакет для Ubuntu и его установка занимает буквально четыре строчки копирования/вставки

https://github.com/joyent/node/wiki/Installing-Node.js-через-package-manager

ps: я использую не socket.io, а библиотеку einaros/ws, которую я считаю гораздо менее раздутой.

person rezoner    schedule 06.08.2012