Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 11.10.2011, 22:51
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Я в данный момент пишу приложение для социальных сетей на Node.js.
Ответить с цитированием
  #42 (permalink)  
Старый 12.10.2011, 19:17
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Андрей Параничев Посмотреть сообщение
Я в данный момент пишу приложение для социальных сетей на Node.js.
Если можно, то подробнее. Почему был выбран Node.js для этого, с чем сравнивался при выборе и что за приложение(тип)?
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #43 (permalink)  
Старый 12.10.2011, 19:20
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

А я пытаюсь доказать себе, что на ноде можно делать простые сайты, а не только как AJAX-бекенд.
Вообще если честно я не понимаю, почему говорят что нода для этого плохо подходит. Асинхронность вспоминают при этом, хотя каким она вообще боком на это влияет? Пока никаких трудностей не возникало...
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #44 (permalink)  
Старый 12.10.2011, 19:50
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а оно запросы случайно не в одном потоке обрабатывает?
Ответить с цитированием
  #45 (permalink)  
Старый 12.10.2011, 19:56
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Сообщение от x-yuri
а оно запросы случайно не в одном потоке обрабатывает?
Это что сарказм? В одном потоке, но если я не ошибаюсь то есть вебворкеры и возможность запуска несколько процессов по числу процессоров.
Ответить с цитированием
  #46 (permalink)  
Старый 12.10.2011, 20:15
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Gozar,
Приложение игровое. Был выбран Node.js потому что мне так удобнее, меня устраивает производительность v8 (судя по тестам на сайте апачи, например) и реализация некоторых библиотек (mongoose, socket.io). К тому же разделение по игровым серверам у меня делается через pub/sub от redis сейчас, но поменяю на MQ какой-нибудь скоро, если не будет устраивать производительность. В общем, мне почти нечего сказать кроме того, что проблем почти нет.

Цитата:
А я пытаюсь доказать себе, что на ноде можно делать простые сайты, а не только как AJAX-бекенд.
Можно, просто многое нужно будет написать самому, или собирать по кускам. Express.js меня не устраивает почти полностью и целиком. А отдельно вам понадобится даже обработчик multipart/form-data, потому что по-умолчанию в ноде его нет вообще.
Ответить с цитированием
  #47 (permalink)  
Старый 12.10.2011, 21:39
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от x-yuri
а оно запросы случайно не в одном потоке обрабатывает?
В одном, в этом вся прелесть.

Сообщение от B~Vladi
А я пытаюсь доказать себе, что на ноде можно делать простые сайты, а не только как AJAX-бекенд.
Взять нормальный роутер, взять нормальный шаблонизатор, и можно делать.

Сообщение от Андрей Параничев
Express.js меня не устраивает почти полностью и целиком.
А чем не устраивает? А то я как раз собрался на него переходить со своего велосипеда.
Ответить с цитированием
  #48 (permalink)  
Старый 12.10.2011, 21:56
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Я не использую фреймворки.
Я сделал так:
Перед нодой поставил nginx. Конфиг:
Код:
// Запросы на неизвестные поддомены отправляем на сервер 404
server {
	listen 80;
	server_name *.amxhost.ru;

	location / {
		proxy_pass http://amxhost.ru:8000/;
		proxy_set_header Host $host;
		proxy_set_header Error 404;
	}
}
// Основной домен
server {
	listen 80;
	server_name amxhost.ru www.amxhost.ru;

	location / {
		proxy_pass http://amxhost.ru:8001;
		proxy_set_header Host $host;
	}
}
// Поддомен
server {
	listen 80;
	server_name ajax.amxhost.ru www.ajax.amxhost.ru;

	location / {
		proxy_pass http://amxhost.ru:8002;
		proxy_set_header Host $host;
	}
}
Т.е. на ноде мы создаем несколько серверов на разных портах:
var CONFIG = require('config');
var SERVERS_PATH = module.filename.replace(/(.*)\/.*$/, '$1/servers');

var LIB = {
	http: require('http'),
	fileSystem: require('fs')
};

// Create servers
LIB.fileSystem.readdir(SERVERS_PATH, function(err, files) {
	if (err) {
		console.log(err);
	} else {
		var length = files.length;
		while (length--) {
			var serverData = files[length].match(/^([^\.]+).js$/);
			if (serverData) {
				var server = module.exports[serverData[1]] = require(SERVERS_PATH + '/' + serverData[0]);
				LIB.http.createServer(server).listen(server.port, CONFIG.host);
			}
		}
	}
});

Это модуль создания серверов. Рядом в папке servers лежат их реализации:
module.exports = function(request, response) {

};
module.exports.port = 8001;

Например, реализация сервера www (обслуживает основной домен), далее делится на сервисы и, в зависимости от запроса, запускается тот или иной сервис.
Всё вроде логично, функционал разделён. Никаких велосипедов писать не пришлось.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #49 (permalink)  
Старый 12.10.2011, 22:45
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

B~Vladi,
Как у вас обрабатывается multipart/form-data и, собственно, загрузка файлов на хост с клиента? Если никак, рекомендую formidable использовать. Быстрая и стабильная библиотека.

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

Кстати, просто на всякий случай, если у вас в сервере передается Content-Length в заголовке ответа, а результат перед выводом строка в utf-8, то значением заголовка должно быть не {String}.length, а Buffer.byteLength({String}, "utf8"), иначе ответ может быть принят браузером не полностью.
Ответить с цитированием
  #50 (permalink)  
Старый 12.10.2011, 22:49
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Сообщение от Kolyaj Посмотреть сообщение
А чем не устраивает? А то я как раз собрался на него переходить со своего велосипеда.
Некрасивый он, и по внутреннему коду и по тому коду, что я должен под него писать. Он не очень красиво разбивается на отдельные скрипты, т.е. я не могу сконфигурировать его так, чтобы "контроллеры" я мог удобно выносить в разные модули. У меня такое ощущение, что его писали не рассчитывая, что на нем будут писать что-то большое. А так, это вроде web.py, только на ноде. Так что я написал половину велосипеда, потом бросил, потому что текущие задачи не требуют роутинга через основной сервер (у меня и туда и обратно данные передает socket.io).
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Серверный JavaScript. JS на сервере. Sniper Общие вопросы Javascript 9 08.11.2013 01:31
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28
Не получается передать переменную из JS в PHP Lion_astana AJAX и COMET 2 23.11.2010 17:23
помогите задать переменную в js bsgroupua Общие вопросы Javascript 3 01.02.2010 18:28
Помогите! Серверный JS swa Серверные языки и технологии 26 13.04.2009 13:23