These are chat archives for synrc/n2o

25th
Apr 2017
Namdak Tonpa
@5HT
Apr 25 2017 09:31
:+1:
Namdak Tonpa
@5HT
Apr 25 2017 12:38
Screen Shot 2017-04-25 at 3.37.27 PM.png
Namdak Tonpa
@5HT
Apr 25 2017 13:57
> 16:55:42.982 [info] Client(N2O_88@127.0.0.1:60252): RECV DISCONNECT(Q0, R0, D0)
16:55:42.982 [info] Client(N2O_88@127.0.0.1:60252): Shutdown for normal
16:55:43.986 [info] WebSocket Connection from: 127.0.0.1
16:55:43.987 [info] Client(undefined@127.0.0.1:60258): RECV CONNECT(Q0, R0, D0, 
   ClientId=N2O_88, ProtoName=MQTT, ProtoVsn=4, CleanSess=true, KeepAlive=60, 
   Username=undefined, Password=undefined)
16:55:43.987 [info] Client(N2O_88@127.0.0.1:60258): SEND CONNACK(Q0, R0, D0, 
    AckFlags=0, RetainCode=0)
16:55:43.988 [info] Rewrite subscribe: [{<<"%u/N2O_88/#">>,[{qos,2}]}]
16:55:43.988 [info] Session(N2O_88): Subscribe [{<<"%u/N2O_88/#">>,[{qos,2}]}]

1>
1> 16:56:43.989 [info] Client(N2O_88@127.0.0.1:60258): RECV PINGREQ(Q0, R0, D0)
16:56:43.989 [info] Client(N2O_88@127.0.0.1:60258): SEND PINGRESP(Q0, R0, D0)
n2o_session + heart протокол теперь опционалные в N2O
за нас теперь все делает MQTT протокол
пинги можно не слать, управление сессиями выбросить
Roman
@AstRonin
Apr 25 2017 14:14
это ты его уже прикрутил?
Namdak Tonpa
@5HT
Apr 25 2017 14:25
в процессе
пока только Paho.MQTT.Client с джаваскрипта вызвал
так как @m-2k не хочет работать, решил сам переписать n2o.js -> mqtt.js который будет просто все форвардить в функции обработки BERT протоколов
сразу два будет формата на клиенте BERT + MQTT
:-\
Andy
@m-2k
Apr 25 2017 14:38
Ужe пeрeписал ibm'овский клиeнт или только понтуeшься? )
И да, как видишь я пишу с тeлeфона и на нeм нeт возможности кодить
Namdak Tonpa
@5HT
Apr 25 2017 14:39
не не переписывал, просто юзаю
Andy
@m-2k
Apr 25 2017 14:40
Ужe хорошо
Namdak Tonpa
@5HT
Apr 25 2017 15:09
MQTT was designed by Andy Stanford-Clark (IBM) and Arlen Nipper in 1999 for connecting Oil Pipeline telemetry systems over satellite.
Andy
@m-2k
Apr 25 2017 15:11
Я же говорил что годнота для GSM, а ты между нодами юзать хотел.
Namdak Tonpa
@5HT
Apr 25 2017 15:15
кароче без mqttc получается слишком интегрировано
надо просто wf:reg wf:send заменить на вызовы mqttc:subscribe mqttc:publish
чтобы пользователям было понятно
ну и n2o_proto заменить на n2o_mqtt
Andy
@m-2k
Apr 25 2017 15:26
Ну да, нe понимаю зачeм ты начал вeртeть eго как ядро
Овeрхeд внутри VM минимальный
Namdak Tonpa
@5HT
Apr 25 2017 16:05
шо минимальный вася, трафика в два раза больше будет
либо в два раза больше клиентов либо один клиент и через него весь трафик
Namdak Tonpa
@5HT
Apr 25 2017 21:50
кароче пизда
там в MQTT клиенте в hex все превращается
ни о каких высокоскоростных DataView речи быть не может
говно древнее
до N2O всем еще расти и расти
Andy
@m-2k
Apr 25 2017 21:54
ты про js? ну надо переписать нахуй
Namdak Tonpa
@5HT
Apr 25 2017 21:55
а я тебя о чем просил?
ладно впизду
Andy
@m-2k
Apr 25 2017 21:55
я с того момента за ноут не садился
Namdak Tonpa
@5HT
Apr 25 2017 21:55
у меня последний рывок
надо раскодировать месагу из mqtt-шного payloadBytes и там непонятно почему не работает
Andy
@m-2k
Apr 25 2017 21:56
надо сделать как есть. у меня тут идея на счёт оффлайн-кеша появилась
Namdak Tonpa
@5HT
Apr 25 2017 21:56
> mx.payloadBytes.toString()
< "131,104,2,100,0,6,99,108,105,101,110,116,100,0,2,111,107"
Andy
@m-2k
Apr 25 2017 21:56
то что нада :-)
Namdak Tonpa
@5HT
Apr 25 2017 21:57
> dec(new Uint8Array([131,104,2,100,0,6,99,108,105,101,110,116,100,0,2,111,107]).buffer)
< {t: 104, v: [{t: 100, v: "client"}, {t: 100, v: "ok"}]}
но при этом смотри
> dec(mx.payloadBytes.buffer)
< "BERT?"
> mx.payloadBytes.byteLength
< 17
> mx.payloadBytes.byteOffset
< 10
ебала какая-то
Andy
@m-2k
Apr 25 2017 21:59
dec работает как я помню с блобами и буферами, но не с массивами
Namdak Tonpa
@5HT
Apr 25 2017 21:59
buffer
Andy
@m-2k
Apr 25 2017 22:00
откуда этот mx.payloadBytes
Namdak Tonpa
@5HT
Apr 25 2017 22:00
от IBM
Andy
@m-2k
Apr 25 2017 22:01
byteOffset это RW или RO?
сделай его 0
а, ну это 10 после dec
чему ты удивляешься
Namdak Tonpa
@5HT
Apr 25 2017 22:01
оно ридонли
Andy
@m-2k
Apr 25 2017 22:01
DataView.prototype.byteOffset
Namdak Tonpa
@5HT
Apr 25 2017 22:03
хочешь помочь вытащи проект
Andy
@m-2k
Apr 25 2017 22:03
arraybuffer.slice(begin[, end]) - это никак не поможет?
Namdak Tonpa
@5HT
Apr 25 2017 22:03
все перепробовал
Andy
@m-2k
Apr 25 2017 22:03
да я на работе
Namdak Tonpa
@5HT
Apr 25 2017 22:03
сторож )
Andy
@m-2k
Apr 25 2017 22:04
гг
хуёрож
поставь брекпоинт на dec и посмотри почему только половина буфера вычитывается
Namdak Tonpa
@5HT
Apr 25 2017 22:05
> dec(mx.payloadBytes.buffer.slice(10,27))
< {t: 104, v: [{t: 100, v: "client"}, {t: 100, v: "ok"}]}
Andy
@m-2k
Apr 25 2017 22:06
ну вот
Namdak Tonpa
@5HT
Apr 25 2017 22:06
> dec(mx.payloadBytes.buffer.slice(mx.payloadBytes.byteOffset,
            mx.payloadBytes.byteOffset+mx.payloadBytes.length))
< {t: 104, v: [{t: 100, v: "client"}, {t: 100, v: "ok"}]}
Andy
@m-2k
Apr 25 2017 22:06
хидер пейлоада?
Namdak Tonpa
@5HT
Apr 25 2017 22:06
какой-то JavaScript идиотизм )
ну я думаю DataView просто на весь MQTT месадж
а пейлоад просто в конце
кароче чувак
эту хуйню айбиэмовскую надо нахуй всю переписать
со всеми ее реконектами и прочей хуетой
портировать его на n2o.js
из заюзать наши пингеры и все такое
Andy
@m-2k
Apr 25 2017 22:08
ну там хидер мессаги поди
как в {binary, _} был который я писал
Namdak Tonpa
@5HT
Apr 25 2017 22:09
кароче жди
счас прикручу
Andy
@m-2k
Apr 25 2017 22:09
мета инфа с названием канала например
Namdak Tonpa
@5HT
Apr 25 2017 22:09
топик в сообщении да
sender, receiver
qos
Andy
@m-2k
Apr 25 2017 22:10
на http://sttn.co RAMONES
Да, и QoS, логично. Не то что ты 4 поля для трансфера файлов сделал, а я потом ебался
Namdak Tonpa
@5HT
Apr 25 2017 22:11
хуйня, я космос слушаю
Andy
@m-2k
Apr 25 2017 22:11
я так и не понял как там выкачать )
Namdak Tonpa
@5HT
Apr 25 2017 22:11
ой шо ты там ебался
ты только пиздеть можешь )
Andy
@m-2k
Apr 25 2017 22:11
Я ИБАЛСЯ
И ПИЗДЕЛ
Namdak Tonpa
@5HT
Apr 25 2017 22:12
гг
Andy
@m-2k
Apr 25 2017 22:14
dec(mx.payloadBytes.buffer.slice(mx.payloadBytes.byteOffset,
            mx.payloadBytes.byteOffset+mx.payloadBytes.length))
кокой пиздец. но в этом весь низкоуровневый js, в этих длинных .NET подобных названиях и кодировании туда-сюда из формата в формат чтобы заюзать нужную ф-ию
романтика говнокода
Namdak Tonpa
@5HT
Apr 25 2017 22:14
РАБОТАЕТ
Andy
@m-2k
Apr 25 2017 22:14
ну ты поц
Namdak Tonpa
@5HT
Apr 25 2017 22:15
review over MQTT
гг
Andy
@m-2k
Apr 25 2017 22:15
а сервер отдельной VM?
Namdak Tonpa
@5HT
Apr 25 2017 22:15
нет
N2O будет поставлятся как плагин для EMQ
Andy
@m-2k
Apr 25 2017 22:16
emqttc заюзал с voxoZ/mq?
Namdak Tonpa
@5HT
Apr 25 2017 22:16
бросаешь в папку плагинов и у тебя N2O over MQ
mqttc не заюзал пушо он нахуй не нужен как я и говорил
а ты лох
:-D
voxos voxos
Andy
@m-2k
Apr 25 2017 22:17
ну мне надо было потыкать
Namdak Tonpa
@5HT
Apr 25 2017 22:17
надо было
пофиксали багу )
проапгрейдили до V5
Andy
@m-2k
Apr 25 2017 22:17
voxos
так ща юзать ориджинал или из vozos?
Namdak Tonpa
@5HT
Apr 25 2017 22:18
счас только в песочнице voxoz/mq все
я еще не закомитил
кнопка чат не работает
но actions в INIT уже приехали!
дальше такое, хоботяжкам доделывать )
Andy
@m-2k
Apr 25 2017 22:19
ну я к тому что форк будет жить или нахуй?
Namdak Tonpa
@5HT
Apr 25 2017 22:19
ну во первых форк мне нужен на другом проекте
а N2O будет просто как плагин к EMQ
Andy
@m-2k
Apr 25 2017 22:20
нококом
Namdak Tonpa
@5HT
Apr 25 2017 22:20
ниважна
voxoz/mq — это официальная версия нашего MQ сервера
пока он совместим с EMQ но что будет в дальнейшем я ни за что не отвечаю
Andy
@m-2k
Apr 25 2017 22:22

нашего

Apache License 2.0

Namdak Tonpa
@5HT
Apr 25 2017 22:25
ну и что
там переписать все нахуй — месяц работы
пока апач стоит мне похуй
я ж лицензию не менял
кнопка нажимается уже
впринципе могу закомититься чтобы ты глянул идею
на пока полистай
Andy
@m-2k
Apr 25 2017 22:42
распечатаю, пожалуй
Andy
@m-2k
Apr 25 2017 22:57
надеюсь ты не завязал транспорт на id куки
Namdak Tonpa
@5HT
Apr 25 2017 23:10
не имею ни малейшего представления о чем ты
Andy
@m-2k
Apr 25 2017 23:11
и я. это же пабсаб, как имя канала генеришь между клиентом и серевером?
Namdak Tonpa
@5HT
Apr 25 2017 23:11
в конфиге MQTT задается
%u/%c — обсуждали уже
Andy
@m-2k
Apr 25 2017 23:12
покажи строчку
Namdak Tonpa
@5HT
Apr 25 2017 23:12
{emq_mod_subscription,[{<<"%u/%c/#">>,2}]}
maxim/C_12341351/#
напрмиер
это параметр плагина
который создает имена топиков по этой схеме
и точек подключения
Andy
@m-2k
Apr 25 2017 23:15
почекай чтобы n2o потоки не умирали при реконнектах
Namdak Tonpa
@5HT
Apr 25 2017 23:15
сторожи лучше
Andy
@m-2k
Apr 25 2017 23:15
шта?
Namdak Tonpa
@5HT
Apr 25 2017 23:16
git clone voxoz/mq
Andy
@m-2k
Apr 25 2017 23:16
или плагин как и js клиент сам этим управляет?
Namdak Tonpa
@5HT
Apr 25 2017 23:17
реконекты в айбиэмовской либе хуйовее чем в N2O
это все шлак
но есть
Andy
@m-2k
Apr 25 2017 23:17

git clone

я бы сделал если мог

Namdak Tonpa
@5HT
Apr 25 2017 23:17
но запустимся с IBM-овской официальной
Andy
@m-2k
Apr 25 2017 23:18
я про сервер-сайд говорил
Namdak Tonpa
@5HT
Apr 25 2017 23:18
кароче вот смотри что на сервер сайде
on_client_subscribe(ClientId, Username, TopicTable, _Env) ->
    io:format("client(~s/~s) will subscribe: ~p~n", [Username, ClientId, TopicTable]),
    Name = binary_to_list(ClientId),
    n2o_cx:context(#cx{module=index,formatter=bert,params=[]}),
    case n2o_nitrogen:info({init,<<>>},[],?CTX) of
         {reply, {binary, M}, _, #cx{}} ->
             Msg = emqttd_message:make(Name, 0, Name, M),
             io:format("N2O ~p Message: ~p Pid: ~p~n",[ClientId, [], self()]),
             self() ! {deliver, Msg},
             ok;
         _ -> skip end,
    {ok, TopicTable}.
on_message_publish(Message = #mqtt_message{topic = Topic, from = {ClientId,_}, 
                     payload = Payload}, _Env) ->
    io:format("publish ~p~n", [Payload]),
    Name = binary_to_list(ClientId),
    case n2o_proto:info(binary_to_term(Payload),[],?CTX) of
         {reply, {binary, M}, R, #cx{}} ->
              case binary_to_term(M) of
                   {io,_,_} -> Msg = emqttd_message:make(Name, 0, Name, M),
                               self() ! {deliver, Msg},
                               ok;
                          _ -> ok end;
                          _ -> ok end,
    {ok, Message}.
я воткнул только эти две функции
И ВСЕ
Andy
@m-2k
Apr 25 2017 23:21
{deliver, Msg} шо-то новое, оно в init приезжает?
Namdak Tonpa
@5HT
Apr 25 2017 23:21
это MQTT внутренний протокол ws_client
я заюзал недокументированые фичи )
счас скину JavaScript
var sessionId = parseInt(Math.random() * 100, 10);
var mqtt = new Paho.MQTT.Client("127.0.0.1", 8083, "N2O_" + sessionId);
var options = {
    timeout: 3,
    onSuccess: function () { console.log("N2O Connected");
                             mqtt.subscribe("n2o", subscribeOptions); },
    onFailure: function (message) { console.log("Failed: " + message.errorMessage); }
};
var subscribeOptions = {
    qos: 0,  // QoS
    invocationContext: {foo: true},  // Passed to success / failure callback
    onSuccess: function () { console.log("N2O Subscribed"); },
    onFailure: function (message) { console.log("Failed: " + message.errorMessage); },
    timeout: 3
};

mqtt.onConnectionLost = function (o) { console.log("Lost: " + o.errorMessage); };
mqtt.onMessageArrived = function (m) {
    var BERT = m.payloadBytes.buffer.slice(m.payloadBytes.byteOffset,
               m.payloadBytes.byteOffset+m.payloadBytes.length);
    try { erlang = dec(BERT);
          console.log(erlang);
          for (var i=0;i<$bert.protos.length;i++) {
             p = $bert.protos[i]; if (p.on(erlang, p.do).status == "ok") return; }
    } catch (e) { console.log(e); }
};


var ws = {
    send: function (payload) {
        var message = new Paho.MQTT.Message(payload);
        message.destinationName = "n2o";
        message.qos = 0;
        mqtt.send(message);
    }
};

mqtt.connect(options);
Это тоже ВСЕ
то что ты не хотел делать, лодарь
тунеядец
Andy
@m-2k
Apr 25 2017 23:23
parseInt(Math.random() * 100, 10); говно
Namdak Tonpa
@5HT
Apr 25 2017 23:23
можешь удалить
все будет работать
говно, ты заебал
ты напиши что то сначала потому будешь говно говорить
не можешь элементарную хуйню сделать
Andy
@m-2k
Apr 25 2017 23:25
что будет если два долбоеба с одинаковым сессионным ключом подключатся?
Namdak Tonpa
@5HT
Apr 25 2017 23:25
ты ебанат
что с тобой пиздеть
Andy
@m-2k
Apr 25 2017 23:25
хз
Namdak Tonpa
@5HT
Apr 25 2017 23:26
я еще кнопку рабочую с бродкастом не сделал
а ты уже кукарекаешь
склонируй и пофиксай блядь
герой
балабол
Andy
@m-2k
Apr 25 2017 23:26
:-)
Namdak Tonpa
@5HT
Apr 25 2017 23:26
ты хотел N2O over MQTT
я тебе сделал
дальше меня не ебет
все иди нахуй
:-)
Andy
@m-2k
Apr 25 2017 23:27
гг
я пофиксаю попозже
когда расчехлю
Andy
@m-2k
Apr 25 2017 23:35
emq_kvs_bridge.erl это же не kvs бридж для персистентности, верно?
Namdak Tonpa
@5HT
Apr 25 2017 23:36
ну задумывался так :-) потом превратился в n2o бридж
Andy
@m-2k
Apr 25 2017 23:38
надо подумать как сделать чтобы не js единым https://github.com/emqtt/CocoaMQTT
Namdak Tonpa
@5HT
Apr 25 2017 23:39
я уже все подумал
у меня команда iOS и Android
пока ты там дрочишь
:-)
event(chat) ->
    User = wf:user(),
    Message = wf:q(message),
    wf:info(?MODULE,"Chat pressed: ~p~n",[Message]),
    Room = code(),
    kvs:add(#entry{id=kvs:next_id("entry",1),from=wf:user(),
                            feed_id={room,Room},media=Message}),
    Msg = emqttd_message:make("n2o", 0, "n2o", 
              term_to_binary(#client{data={User,Message}})),
    self() ! {deliver, Msg};
вот так выглядит бродкаст на "n2o" комнату