Not logged in. · Lost password · Register
Forum: Jabber developers Jabber CZ & SK - vývoj software pro Jabber obecně
CJP: poslání zprávy více uživatelům (eq bcc v mailu)
Page:  1  2  next 
Avatar
v6ak #1
Member since Oct 2007 · 29 posts
Group memberships: Členové
Show profile · Link to this post
Subject: CJP: poslání zprávy více uživatelům (eq bcc v mailu)
/* CJP = class.jabber.php */
Je možné nějak poslat jednu zprávu více uživatelům tak, aby zádný z adresátů nemohl vidět ostatní? (Jako kdyby všichni byli v bcc u mailu, případně bych to ještě poslal sám sobě.)

Asi musím použít nějaký oddělovač, že?

/* Hodí se to např. u diskuzního fóra. */
I don't CQ!      ;-)
zenek (Administrator) #2
Member since Nov 2005 · 503 posts · Location: Bohumín
Group memberships: Administrátoři, Členové
Show profile · Link to this post
Ono jde posílat zprávu více uživatelům najednou jinak než jako spoustu samostatných zpráv nebo Extended Stanza Addressing (XEP-0033)?
Stop Skype Plague
Avatar
Pihhan #3
User title: Linuxák
Member since Apr 2003 · 262 posts · Location: Předklášteří
Group memberships: Členové
Show profile · Link to this post
Momentálně jediná rozumná metoda je zavolat si poslání zprávy pro každého uživatele zvlášť. multicasting pomocí XEP-33 je vesměs málo podporován a těžko se na něj můžete spoléhat.
zenek (Administrator) #4
Member since Nov 2005 · 503 posts · Location: Bohumín
Group memberships: Administrátoři, Členové
Show profile · Link to this post
Quote by Pihhan:
Momentálně jediná rozumná metoda je zavolat si poslání zprávy pro každého uživatele zvlášť. multicasting pomocí XEP-33 je vesměs málo podporován a těžko se na něj můžete spoléhat.

Právě proto mi přijde původní dotaz zvláštní, protože by mě zajímalo, jak to jde udělat tak, aby o sobě příjemci naopak věděli :-)
Stop Skype Plague
Avatar
v6ak #5
Member since Oct 2007 · 29 posts
Group memberships: Členové
Show profile · Link to this post
No já se v XMPP příliš nevyznám a Jabber používám relativně krátkou dobu (a vůbec IM obecně, jelikož jsem předtím používal radši e-mail, než by mě někdo donutil k používání <toho, jehož jméno se nevyslovuje>).
Vím o XMPP něco málo, totiž je jde o otevřený protokol používající TCP spojení a XML formát. XML sice znám, ale v samotném jazyce se příliš nevyznám, jen jsem trošku studoval kód dvou Jabber-PHP knihoven. <OT>Některá místa knihoven byla docela "lahůdková".</OT>

Pokud vím, tak jsem někde (asi v Psi) viděl odesílání více příjemcům, tak jsem se chtěl zeptat jak na to.

Quote by Pihhan:
multicasting pomocí XEP-33 je vesměs málo podporován a těžko se na něj můžete spoléhat.
Jediný, kdo to musí umět je jabber server, ke kterému se přímo připojuju, ne? Umí to jabbim.cz?
I don't CQ!      ;-)
Avatar
Pihhan #6
User title: Linuxák
Member since Apr 2003 · 262 posts · Location: Předklášteří
Group memberships: Členové
Show profile · Link to this post
Nechci kecat, já myslím že to ještě neumí. Ale nevím :)

Osobně bych se ale vyprdnul na podobné složitosti, pokud nejde o hooodně moc příjemců, použil bych normální foreach a pole příjemců. něco typu


$message = "prevratna zprava o konci sveta";
$prijemci = array("lojza3@jabber.cz", "bobek2@jabbim.cz", "drzkopad@njs.netlab.cz");

foreach ($prijemci as $jid) {
    send_message($jid, $message);
}

S tím že si nevpomínám jak se správně píše foreach v php, takže si to případně opravte. Prijemci by se pravdepodobne sosali z databaze, v podstate staci posilat zpravu pri kazdem precteni radku z sql, tedy pri fetchrow_array. Pokud chcete dělat rozposílání zprávy stovce lidí, tak to už asi bude chtít dedikovaného bota, který zajistí rozposílání zprávy. Z php to pošlete jenom jemu, a on už to rozešle.

Nevím, php knihovny asi nejsou úplně ideální na psaní jabber robotů, a jejich stav tomu myslím odpovídá. Přece jenom u jabberu to nefunguje jako u php, vygeneruj a skonči. Navazovat při každém reloadu spojení s jabber serverem je o něčem jiném, než se připojovat k mysql (i když možná ne moc).
Avatar
pinky (Administrator) #7
Member since Mar 2003 · 1046 posts
Group memberships: Administrátoři, Členové
Show profile · Link to this post
1. I PHP script muze bezet porad
2. Je to vhodnejsi, novinky posilat jen online lidem, zbytecne se nazasiraj offline messages mrtvych dusi...
Pinky, member of Jabbim.cz Team
[Image: http://hidentity.org/hid/CZ556289.gif]
Avatar
Pihhan #8
User title: Linuxák
Member since Apr 2003 · 262 posts · Location: Předklášteří
Group memberships: Členové
Show profile · Link to this post
Jiste, php muze bezet porad. Jde o to, jakym zpusobem ho pustis. Na web serveru porad bezet nemuze, aspon vetsina serveru ma nejaky timeout a pokud to bezi prilis dlouho, tak to sestreli. Psat nejake demony v php, hm, no ja bych do toho nesel. Mame perl, mame python, mame i dalsi jazyky. A podle reakci je knihovna pro jabber v php jedna z nejhorsich, osobne jsem v tom nikdy nedelal :)

Na to, abys mohl posilat zpravy jenom online uzivatelum potrebujes o poznani kvalitnejsi kod, musi toho byt mnohem vic. Mnohem vic veci si musis zaridit, v podstate bys mel resit prioritu presenci a posilat uzivateli jen jednu zpravu. Jiste, neni zas tak velky problem to vyresit, ale trivialni to neni. Kdyz to nasypes proste a jednoduse na bare jid, server si s tím poradí sám. Jistě to není ideální řešení, ale je jednodušší a v běžných případech bude stačit.
Avatar
pinky (Administrator) #9
Member since Mar 2003 · 1046 posts
Group memberships: Administrátoři, Členové
Show profile · Link to this post
1. Nevim, neznam, ale napriklad pythoni roboti zerou ramku i cpu, perlovi sice jen cpu, ale s chuti. PHP robot nezere ani jedno. Proti gustu zadny disputat, ale nechapu, proc jit na jednoducheho bota s raketometem. Na klasickeho bota je phpko naprosto skvely.

2. Presence mi dojde, kdyz mi dojde, poslu to klidne na bare jid, server zaridi sam. Ale nebudu hazet na server bordel, kterej si nikdo nikdy neprecte. Mluvim z vlastni zkusenosti, podobny bot je na pilsfree, posila to vsem, 70% lidi to nikdy nepusti. A spool bobtna a bobtna.
Pinky, member of Jabbim.cz Team
[Image: http://hidentity.org/hid/CZ556289.gif]
zenek (Administrator) #10
Member since Nov 2005 · 503 posts · Location: Bohumín
Group memberships: Administrátoři, Členové
Show profile · Link to this post
PHP knihovny jsou špatné mj. tím, že všichni používají CJP, která už se nevyvíjí, místo té knihovnu, kterou jsem tu několikrát odkazoval a zase si její jméno nepamatuju :-)
Stop Skype Plague
Avatar
v6ak #11
Member since Oct 2007 · 29 posts
Group memberships: Členové
Show profile · Link to this post
dedikovaný bot
Na to se bude asi hodit http://www.jabbim.cz/unb/thread/903

Quote by Pihhan:
v podstate bys mel resit prioritu presenci a posilat uzivateli jen jednu zpravu.
Nerozumím úplně (t.j. částečně rozumím) - před každým odesláním zprávy mám poslat presence? Mám kontrolovat, zda jsem to už neposlal?

Quote by Pihhan:
Kdyz to nasypes proste a jednoduse na bare jid
Nerozumím. Co to je 'bare'?

Quote by zenek:
PHP knihovny jsou špatné mj. tím, že všichni používají CJP, která už se nevyvíjí, místo té knihovnu, kterou jsem tu několikrát odkazoval a zase si její jméno nepamatuju :-)
To viděl jsem ještě jednu Jabberovou php knihovnu (via jabber.cz), když jsem zhruba studoval kód, tak jsem tam viděl podobné escapovací "lahůdky" (o něco lepší než magic_quotes_gpc). U té druhé mě však odradilo, že je prý event-driven (nestudoval jsem to do hloubky), což si v praxi nedvedu v php představit.
I don't CQ!      ;-)
zenek (Administrator) #12
Member since Nov 2005 · 503 posts · Location: Bohumín
Group memberships: Administrátoři, Členové
Show profile · Link to this post
No ono to event driven je v praxi o něco rychlejší. Možná to není kvůli tomu, že je event driven, ale jenom kvůli tomu, že je přepsaná.
Stop Skype Plague
Avatar
Pihhan #13
User title: Linuxák
Member since Apr 2003 · 262 posts · Location: Předklášteří
Group memberships: Členové
Show profile · Link to this post
In reply to post #11
Quote by v6ak on 2007-11-05, 22:02:
dedikovaný bot
Na to se bude asi hodit http://www.jabbim.cz/unb/thread/903

Quote by Pihhan:
v podstate bys mel resit prioritu presenci a posilat uzivateli jen jednu zpravu.
Nerozumím úplně (t.j. částečně rozumím) - před každým odesláním zprávy mám poslat presence? Mám kontrolovat, zda jsem to už neposlal?
Ne poslat, ale přijmout. Tady je problém v tom, že na to abys mohl přijmout presence, musíš na ni nějakou dobu čekat. V praxi to chce robota, který bude připojený nonstop. Ten si bude spravovat stavy kontaktů a rozposílat zprávy. Jinak to asi nejde moc udělat, pokud by robot při každém odeslání se měl připojit, chvíli počkat, poslat zprávu a zase odpojit, šíleně by to blikalo uživatelům v klientovi a rádi by to asi vůbec neměli. Problém toho je, že potřebuješ nonstop běžící službu.
Quote by v6ak:
Quote by Pihhan:
Kdyz to nasypes proste a jednoduse na bare jid
Nerozumím. Co to je 'bare'?
Jid ve formátu user@server bez přidané /resource, tedy nerozlišené kterému připojenému klientovi zprávu poslat. Jak se to zařídí závisí na serveru. Každý přihlášený klient má nějaké zdroj (resource), i když někdy o tom vůbec neví. Zdroj je to, co rozlišuje 2 připojené klienty na stejné JID. Ne každý to používá, ale každá služba by měla počítat s tím, že to existuje.
Quote by v6ak:
Quote by zenek:
PHP knihovny jsou špatné mj. tím, že všichni používají CJP, která už se nevyvíjí, místo té knihovnu, kterou jsem tu několikrát odkazoval a zase si její jméno nepamatuju :-)
To viděl jsem ještě jednu Jabberovou php knihovnu (via jabber.cz), když jsem zhruba studoval kód, tak jsem tam viděl podobné escapovací "lahůdky" (o něco lepší než magic_quotes_gpc). U té druhé mě však odradilo, že je prý event-driven (nestudoval jsem to do hloubky), což si v praxi nedvedu v php představit.
Skoro každou knihovna, kterou jsem pro jabber viděl, je event driven. No, spíš ne skoro, ale všechny. Souvisí to i s parsováním XML, které se provádí stejně. Bez event-driven knihovny můžeš dělat jenom minimum věcí, nebo šíleně nepohodlně. Jak chceš třeba zpracovat příchozí presenci? Nebo jakým způsobem by ti měla knihovna říct, že ti někdo chce poslat soubor?

Prostě zaregistruješ obsluhu pro přijímání souboru, a začneš provádět nějaké akce až ti přijde takový paket. Jinak si to moc představit neumím, a myslím že pokud chceš udělat něco ne úplně banálního, stejně to takhle budeš muset dělat. Jistě, na odeslání zprávy bez přechodu do online stavu ti stačí přihlásit, odeslat zprávu, odhlásit. Pokud ale potřebuješ čekat na přijetí jakékoliv zprávy, nebude to už tak jednoduché :) Takže pokud to myslíš vážně, event-driven budeš potřebovat.
Avatar
Pihhan #14
User title: Linuxák
Member since Apr 2003 · 262 posts · Location: Předklášteří
Group memberships: Členové
Show profile · Link to this post
In reply to post #9
Quote by pinky on 2007-11-05, 15:35:
1. Nevim, neznam, ale napriklad pythoni roboti zerou ramku i cpu, perlovi sice jen cpu, ale s chuti. PHP robot nezere ani jedno. Proti gustu zadny disputat, ale nechapu, proc jit na jednoducheho bota s raketometem. Na klasickeho bota je phpko naprosto skvely.
Nerozumím tomu, proč by měl perlový robot žrát CPU s chutí. Perl je obecně rychlejší než python (pokud nebudu počítat pythoní wrapper kolem knihovny v C a nativní implementaci v perlu), já pochybuju, že by perl žral nějak znatelně výkonu víc, než php. Pravda, nikdy jsem to neměřil, a nikdy jsem nedělal bota v PHP. Myslím že to spíš záleží na způsobu programování, ať je skriptovací jazyk jakýkoliv. Samozřejmě na to má velký vliv i použitá knihovna.

Mám pingovacího robota napsaného v perlu a nevšiml jsem si, že by nějak výrazně žral cpu. Jistě, něco žere, protože pingá docela často, ale nic co by se projevilo. I když nepovažuju perl za nějaký úžasně krásný jazyk, myslím že zrovna od PHP není zas tak odlišný. Máš něco konkrétního, proč by měl perlový bot žrát cpu s chutí?

Mimochodem, co by měl umět "klasický robot"? Zpracování jenom zpráv, nebo i presencí, nebo něco míň? víc?
Quote by pinky:
2. Presence mi dojde, kdyz mi dojde, poslu to klidne na bare jid, server zaridi sam. Ale nebudu hazet na server bordel, kterej si nikdo nikdy neprecte. Mluvim z vlastni zkusenosti, podobny bot je na pilsfree, posila to vsem, 70% lidi to nikdy nepusti. A spool bobtna a bobtna.
Tak jistě, záleží jak často posíláš a komu posíláš. Dá se to řešit i tak, že budeš posílat jenom lidem, kteří o to mají zájem, tj. třeba si přidají kontakt robota do rosteru, nebo si nějak jinak povolí funkci posílání. Zase ale pravděpodobně ti co byli v tu chvíli offline přišli o nějakou zprávu, o které by třeba rádi věděli. Např. zdechl někde server 5 minut předtím, než já se přihlásím. Tvoje řešení sice neplní spool, ale mě se tahle zpráva nedostane. Jistě, taky jsem začal psát rozposílacího bota jenom přihlášeným uživatelům, i když se stejně nikdy nenasadil. Problém je v tom, že pokud bych chtěl tohle řešit, musím si udržovat nějakou dobu zprávy v zásobě, a poslat to uživateli třeba po půl hodině, až se přihlásí. Ale potom už se všechno začíná poměrně dost komplikovat :)
spike411 #15
Member since Jan 2006 · 145 posts · Location: Praha
Group memberships: Členové
Show profile · Link to this post
Napadlo mě, že pro jednoduchost by nemusel sledovat stavy, ale posílat to jako typ zpráv "headline". Servery by podle doporučení neměly ukládat headlines jako offline zprávy, takže to řeší alespoň problém s bobtnajícím spoolem.
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please note the verification code from the picture into the text field next to it.
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Page:  1  2  next 
Go to forum
This board is powered by the Unclassified NewsBoard software, 1.6.4, © 2003-7 by Yves Goergen
Current time: 2012-02-04, 16:17:12 (UTC +02:00)