2017-02-04 2 views
0

Есть вопрос об этом раньше, ответ - нет. Но теперь, с помощью браузера/webpack, могу ли я просто написать код, как я бы на сервере, и он будет запущен в браузере, или есть какие-то ограничения, которые сделали бы это невозможным?Можно ли запустить сервер socket.io/websocket в браузере?

ответ

2

Нет, вы не можете. Запуск сервера в браузере требует доступа к функциям низкого уровня, которых просто не существует в браузере. Browserify не может добавить к браузеру основные низкоуровневые функции, которых у него нет, что потребует дополнительной поддержки собственного кода, чтобы сделать работу.

Browserify может только пакетный код, который является либо чистым Javascript, либо построен поверх инфраструктуры, которая уже существует в браузере, или может быть смоделирована с помощью некоторого чистого javascript, созданного поверх функций, существующих в браузере.

Так, например, вы можете взять библиотеку crypto hash из node.js, которая является чистым javascript, и не полагается на какие-либо возможности, которых нет в браузере, и вы можете ее прокрутить (например, переупаковать) это в браузере. Но вы не могли взять пакет node.js, который использует низкоуровневую связь UDP, поскольку базовый доступ к UDP отсутствует в браузере.

В общем случае, если код node.js выполняет I/O или управляет другими процессами или использует любой модуль с собственным кодом, он, скорее всего, не будет работать с браузером (есть несколько обходов с некоторыми файлами ввода/О).

Для получения дополнительной информации см:

Does Browserify have any limitations?

Browserify Compatibility


Таким образом, вы не говорите, что ваша текущая проблема заключается в том, что вы пытаетесь решить, но, как правило, вы бы запустите фактический сервер где-нибудь и подключите браузер к этому серверу. Если вы хотите, чтобы какой-то конкретный сеанс браузера отображался как «ведущий», вы, безусловно, могли бы сделать ваш клиент/сервер таким образом. Одним из клиентов может быть мастер (по сути, сам сервер) для других клиентов, подключенных к тому же серверу. Это будет сделано с помощью того, как вы запрограммировали свой сервер и как он общался с различными клиентами, которые подключаются к нему. Фактические серверы могут быть прокси-серверами для других клиентов, где клиент получает доступ к серверным функциям через прокси-соединение с фактическим сервером.

Смежные вопросы