Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Веб-программирование > JavaScript / HTML

JavaScript / HTML Создание динамической разметки страниц

Ответ
 
Опции темы
Старый 10.10.2013, 16:42   #46
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Node.JS + MongoDB

И я подобное писал для обработки массива и секвенции, но в примерах выше оно не помогает

// index - startIndex
// processor - function(item, itemIndex, next)
module.exports.processArrayAsync = function (array, indexprocessoronEndCallback) {
    
index typeof index !== 'undefined' index 0;

    if (
index >= array.length) {
        if (
onEndCallbackonEndCallback();
        return;
    }
    
process.nextTick(function () {
        
processor(array[index], index, function () {
            
module.exports.processArrayAsync(array, index 1processoronEndCallback);
        });
    });
};


module.exports.runJobsQueueAsync = function(jobsindexonEndCallback) {
    
index typeof index !== 'undefined' index 0;

    if (
index >= jobs.length) {
        if (
onEndCallback) {
            
onEndCallback();
        }
        return;
    }
    
process.nextTick(function () {
        
jobs[index](function () {
            
module.exports.runJobsQueueAsync(jobsindex 1onEndCallback);
        })
    });
}; 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 10.10.2013, 21:10   #47
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Node.JS + MongoDB

Потому что тебе нужен не статичный chain, что потребует модификации в твой - возможность вставлять job'ы по пути выполнения.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (10.10.2013)
Старый 10.10.2013, 21:16   #48
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Node.JS + MongoDB

Хм, а я не подумал что можно вставлять джобы в цепочку... Спасибо, навел на мысль...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 10.10.2013, 22:33   #49
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Node.JS + MongoDB

Я это сделал!
function AFlow() {
    
this.index 0;
}

module.exports.AFlow AFlow;

module.exports.run = function (jobs) {
    var 
flow = new AFlow;
    
flow.jobs jobs;
    
flow.doJob();
    return 
flow;
};

AFlow.prototype.add = function (job) {
    
this.jobs.splice(this.index 10job);
};



AFlow.prototype.doJob = function () {
    var 
flow this;
    if (
flow.index >= flow.jobs.length) {
        return;
    }
    
process.nextTick(function () {
        
flow.jobs[flow.index](function () {
            
flow.index++;
            
flow.doJob();
        }, 
flow)
    });
}; 
использование:

var util = require('util');
var 
AFlow =  require('AFlow');

var 
data = [];

flow AFlow.run([
    function (
next) {
        
data.push('one');
        
console.log(util.inspect(data));
        
setTimeout(next500);
    },
    function (
next) {
        
data.push('two');
        
flow.add(function (next) {
            
data.push('three');
            
console.log(util.inspect(data));
            
setTimeout(next500);
        });
        
console.log(util.inspect(data));
        
setTimeout(next500)
    },
    function (
next) {
        
data.push('four');
        
console.log(util.inspect(data));
        
setTimeout(next500)
    },
    function(){
        
data.push('five');
        
console.log(util.inspect(data));
    }
]); 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
moka (10.10.2013)
Старый 16.10.2013, 16:38   #50
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Node.JS + MongoDB

а есть ли для node js ubjson парсер?

UPD: кажется нагуглил https://github.com/Sannis/node-ubjson
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 29.10.2013, 18:59   #51
ant2on
Модератор
 
Аватар для ant2on
 
Регистрация: 05.11.2005
Сообщений: 161
Написано 63 полезных сообщений
(для 182 пользователей)
Ответ: Node.JS + MongoDB

Сообщение от moka Посмотреть сообщение
UPD:
Я не советую, но есть socket.io клиент для unity: https://github.com/NetEase/UnitySocketIO
Использую UnitySocketIO, нашел 2 серьезные проблемы:

1) Клиент создает слишком большую нагрузку на CPU
https://github.com/NetEase/UnitySocketIO/issues/13
http://forum.unity3d.com/threads/204...-UnitySocketIO

2) Нельзя принимать и посылать ивенты (socket.emit). Работают только месаги (socket.send)
https://github.com/NetEase/UnitySocketIO/issues/16
__________________
Anarki's Revenge
(Offline)
 
Ответить с цитированием
Старый 29.10.2013, 22:46   #52
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Node.JS + MongoDB

Я уже написал бинарную сериализацию пакетов и связал Unity и node js по tcp с использованием net модуля. Сейчас хочется сделать некую архитетуру для создания ММО решений.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 30.10.2013, 02:18   #53
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Node.JS + MongoDB

Не думаешь зарефакторить код, и выложить github проект? Т.к. думаю на него спрос будет весьма большой.

Если с точки зрения пользователя это работает как socket.io то вообще сказка и у тебя есть возможность менеджить популярный модуль на npm.

В общем, на такой модуль будет спрос если его maintain'ить нормально.
(Offline)
 
Ответить с цитированием
Старый 30.10.2013, 08:08   #54
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Node.JS + MongoDB

Сообщение от moka Посмотреть сообщение
Не думаешь зарефакторить код, и выложить github проект? Т.к. думаю на него спрос будет весьма большой.

Если с точки зрения пользователя это работает как socket.io то вообще сказка и у тебя есть возможность менеджить популярный модуль на npm.

В общем, на такой модуль будет спрос если его maintain'ить нормально.
Пока еще не думал, видно будет. Я бы предложил тебе поучаствовать в его разработке если интересно, когда будет что-то получаться, то можно будет подумать о выкладывании. Пока наверное рано.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 30.10.2013, 10:52   #55
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Node.JS + MongoDB

На данный момент чат сервер "все со всеми" можно сделать вот так:

var nodeSharpTCP = require('NodeSharpTCP');

// полиси сервер
var SocketPolicyServer nodeSharpTCP.SocketPolicyServer;
SocketPolicyServer.listen(__dirname '/public/crossdomain.xml'843);

// чат сервер
var tcpServer = new nodeSharpTCP.TCPServer();

tcpServer.packetProcessors.push(function (serverclientpacketnext) {
    
server.broadcastObject(packet);
});

tcpServer.listen(8124, function () {
    
console.log('server bound');
}); 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 01.11.2013, 01:18   #56
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Node.JS + MongoDB

Прикольно.
Как понимаю нужен обмен Policy чтобы сделать нормальное общение? (также как в flash'е?).

packetProcesors - как понимаю ты пушаешь функцию потом которая будет вызываться для каждого пакета.

Как тебе подход как в socket.io? В плане имён пакетов и подпиской на них?
Например:

var UnitySocket    = require('unitySocket').Socket,
    
PolicyProvider = require('unitySocket').PolicyProvider;

// create policy server with preloaded policy provider file
var unityPolicy = new PolicyProvider(__dirname '/public/crossdomain.xml');
unityPolicy.listen(843);

// create server socket
var server = new UnitySocket();

// if error occured
server.on('error', function(err) {
  throw 
err;
})

// once bound
server.on('bound', function() {
  
// server is bound and ready to accept connections
});

// someone connects
server.on('connect', function(socket) {

  
// subscribe to generic event for each packet
  
socket.on('packet', function(namedata) {
    
// name == 'foo'
    // data == json
  
});

  
// subscribe to packet with specific name
  
socket.on('foo', function(data) {
    
// data == json
  
});

  
// subscribe to client disconnect
  
socket.on('disconnect', function(data) {
    
// data contains reason and additional details
  
});

});

// bind server socket
server.listen(8080); 
В node.js да и везде вообще, очень важен поток мысли и дизайн технического решения.
Например использовать EventEmitter'ы для использования event-driven парадигмы - очень збсь штука.
Также можно предоставить promises как альтернативная парадигма, это уже зависит от разраба что и как юзать.

Я сейчас promises юзаю, и порой очень просто и элегантно выходят решения (никаких пирамид).

Можно выложить на github и там уже по пути менеджить и т.п.
(Offline)
 
Ответить с цитированием
Старый 01.11.2013, 07:58   #57
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Node.JS + MongoDB

Сообщение от moka Посмотреть сообщение
Прикольно.
Как понимаю нужен обмен Policy чтобы сделать нормальное общение? (также как в flash'е?).
Да, WebPlayer Unity так же проверяет возможность подключения как и флеш.

Сообщение от moka Посмотреть сообщение
packetProcesors - как понимаю ты пушаешь функцию потом которая будет вызываться для каждого пакета.
Да там похоже на middleware в express

Сообщение от moka Посмотреть сообщение
Как тебе подход как в socket.io? В плане имён пакетов и подпиской на них?
Вчера написал по просьбе ant2on'а нечто похожее на socket.io как враппер над своим сервером.
Node js
var util = require('util');
var 
NodeSharpTCP = require('NodeSharpTCP');

// полиси сервер
var SocketPolicyServer NodeSharpTCP.SocketPolicyServer;
SocketPolicyServer.listen(__dirname '/public/crossdomain.xml'843);

// евент сервер
var EventServer NodeSharpTCP.EventServer;

var 
server = new EventServer();

server.on('connection', function(client){

    
console.log('Clients: 'server.clients.length);

    
client.emit('welcome', {idclient.id});

    
client.on('disconnect', function(){
        
console.log('Clients: 'server.clients.length);
    });

    
client.on('message', function(msg){
        
console.log('message: 'util.inspect(msg));
        
client.sendMessage(msg);
    });

    
client.on('custom-event', function(data){
        
console.log('custom-event: 'util.inspect(data));
        
client.emit('custom-event'data);
    });
});


server.listen(8124, function(){
    
console.log('Event Server bound')
}); 
Unity/C#
using System.Collections.Generic;
using BinarySerialization;
using UnityEngine;
using System.Collections;

public class 
EventServerClientTest MonoBehaviour
{
    private 
EventServerClient _client;

    public 
void Start ()
    {
        
_client GetComponent<EventServerClient>();

        
_client.On("connect"OnConnect);
        
_client.On("welcome"OnWelcome);
        
_client.On("custom-event"OnCustomEvent);


        
_client.Connect();
    }

    private 
void OnCustomEvent(object obj)
    {
        
Debug.Log("Custom Event Received: " obj.ToDebugString());
    }

    private 
void OnWelcome(object obj)
    {
        var 
welcomeEvent = (Dictionary<stringobject>) obj;
        
Debug.Log("Welcome: " welcomeEvent["id"]);
    }


    private 
void OnConnect(object obj)
    {
        
Debug.Log("OnConnect");
        
_client.Emit("custom-event", new object[]{1true"three"});
    }


__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 05.11.2013 в 18:18.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
ant2on (02.11.2013), moka (02.11.2013), Randomize (05.11.2013), SpiritSound (06.12.2015)
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 15:55.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com