Вопрос

Я пишу игровой сервер в Node.js, а некоторые операции включают в себя тяжелые вычисления на части сервера. Я не хочу перестать принимать соединения, пока бегу эти вычисления - как я могу запустить их на заднем плане, когда Node.js не поддерживает темы?

Это было полезно?

Решение

Я не могу поручиться ни за любой из них, но если вы хе, согнув на работе в процессе работы, было несколько независимых реализаций API WebWorkers для узла, как указано на странице модулей узлов. :

  • http://github.com/cramForce/node-worker.
  • http://github.com/pgriess/node-webworker.

На первый взгляд, вторая выглядит более зрело, и они оба позволяют вам по существу делать резьбовое программирование, но это в основном Actor-Model, поэтому все это сделано с сообщением, и вы не можете иметь общие структуры данных или ничего.

Кроме того, для чего это стоит, команда Node.js намерена точно реализовать эту API, в конце концов, так что эти инструменты, даже если они не идеальны, может быть достойным слоем.

Другие советы

var spawn = require('child_process').spawn;
listorwhatev = spawn('ls', ['-lh', '/usr']);//or whatever server action you need

//then you can attach events to that list like this
listorwhatev.on('exit', function(code){});

///or in this ls example as it streams info
listorwhatev.stdout.on('data', function(info){sys.puts(info);});

Убедитесь, что процесс поясов происходит один раз в приложении, затем подавать в него вещи и просмотреть его для событий на соединение. Вы также должны убедиться, что Listorwhatev все еще работает перед обработкой его. Как мы все любим этих неосторожных ошибок в узле, разбиваем приложение, не мы;) Когда появляется появление (PID), хотя на вашей машине есть убийство или что-то плохое, и вы не выходили из кода вашего кода, ваш Обработчик событий Stream упадет в ваше приложение.

и некоторые операции включают в себя тяжелые вычисления на части сервера

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

Как я могу запустить их на заднем плане, когда Node.js не поддерживает потоки

Вы можете появиться несколько экземпляров и связей пары работника (узла) с принятием соединений (экземпляра узла), используя, например, для блокировки Redis POP. Node.js Библиотека Redis не блокирует.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top