[php] webclient voor MSN

Pagina: 1
Acties:
  • 127 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil gaan beginnen met het ontwikkelen van een eigen webclient voor MSN.
Deze moet er hetzelfde uit gaan zien als de Messenger bij Windows:
dezelfde indeling dan.
Dus dat zal ik oplossen met frames of tabbellen (denk frames hierbij).

Ik heb al wat topics doorlopen,
maar ik ben nog niet tegengekomen of er iemand al zoiets heeft gemaakt.

Het enige script wat ik vond was voor command-line gebruik:
[rml][ php] msn bot? hoe[/rml]


Het geheel moet in PHP plaatsvinden ... Dit is het enige wat de server ondersteunt: geen asp of jsp

Wie heeft tips, ideeën , resources (voorbeeldcodes, messengerprotocollen etc.)

En ja, ik zoek me ook suf op Internet :)
Maar wil het ook gewoon hier vragen, omdat er hier veel "verenigde kennis" zit.

Acties:
  • 0 Henk 'm!

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 18-09 13:17

Basszje

Reisvaap!]

Het grootste probleem is denk ik het 'refreshen' van de data dat in een window welk makkelijk kan, maar in een webbrowser toevallig niet. Daar zal je dus eerst iets op moeten vinden ( wellicht een bep. refresh delay tijd :? ) .

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nou dat doet die class die hierboven genoemd staat al ...
Dat werkt op zich wel, want ik zie daarin wel aan mij verstuurde berichtjes staan.
Maar het is dan niet mogelijk om te verzenden, dus daar moet ik iets op verzinnen.
Want aan de rechterkant moet de contactlist komen, dus dan heb ik ook die class weer nodig en moet je dan ook het berichtje kunnen tikken en versturen :)

De maker van dat script is er echter niet mee verder gegaan.

Maar misschien weten jullie goede links voor informatie over het MSN protocol (voor PHP troep dus)

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

ookal in het topic wat je aangaf aangegeven, in php kan het niet.

Je moet standaard een connectie met de server hebben, en bij iedere 'incoming call' moet je een nieuwe connectie maken en daar op blijven pollen. in PHP kan je maar 1 connectie tegelijk pollen, omdat je simpelweg je script niet kan forken. Helaas..

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De gesprekjes komen prima binnen met dat script anders :(

Acties:
  • 0 Henk 'm!

Verwijderd

manier waarop ik het zou doen:
1. set_time_limit 0
2. web interface met layers en javascript maken, dus javascript functies om de status van een contact visueel te veranderen, javascript functies om inkomende chat berichten weer te geven.
3. echo die web interface via het script naar de browser
4. flush de output buffer
5. ga nu een oneindige loop in die inkomende events oproept (verandering van status van contact, inkomende chat berichten). met php print je dan een javascript functie call naar de browser die de interface update, flush de output buffer na elk inkomend bericht
6. uitgaande berichten verzend je met een iframe (dat niet zichtbaar is voor de gebruiker)

Omdat je de pagina niet afsluit, je blijft dingen sturen kun je dingen naar de gebruiker blijven sturen. Nadeel is dat dit aardig wat bandbreedte kost.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zou het echt veel bandbreedte kosten ... in feite stuur je alleen maar korte tekstjes ...

Zou het wel middels ASP (of ASP.NET) kunnen?
Of bestaan er al webclients voor .NET ?

Want dan zou ik zelf wel een server kunnen draaien thuis ervoor :)

Acties:
  • 0 Henk 'm!

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01 11:31
Het handigste hiervoor lijkt me een java-applet of een activeX-component.. Via php/asp/welke serversided taal dan ook wordt het gepruts.

Acties:
  • 0 Henk 'm!

Verwijderd

Veel bandbreedte zal het niet kosten, omdat je relatief weinig tekst verstuurd.
Je zit alleen met php-scripts die constant lopen.

Het is volgens mij wel mogelijk (ff iets uitleggen)

Stel je heb je pagina, die is gewoon netzoals normaal in 1 keer verstuurd.
Binnen die pagina heb je een iframe van 0 bij 0 waarin je dat constant lopende php-script heb staan.

Met dat script poep je elke regel uit die gechat wordt.
Een versimpeld voorbeeld:
PHP:
1
2
3
4
5
6
7
while (true) {
   $mesg = readFromSocket(); // hier haal je dus een eventuele nieuwe regel op
   if ( $mesg != "" ) {
      echo "parent.WriteChatLine( '".$mesg."' );\n";
      flush();
   }
}

WriteChatLine is een javascript functie die op die statische pagina staat, en die een nieuwe row aan een tabel oid toevoegt.

[edit]
Dit is dus een wat uitleg bij de reactie van: webmaniac

[ Voor 8% gewijzigd door Verwijderd op 26-11-2002 20:06 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Iemand al eens geprobeerd om zoiets te maken?
Ik heb wel ontzettend veel onderhoudsmodules gemaakt,
maar nog nooit iets dergelijks met socket-zooi enzo ...

Acties:
  • 0 Henk 'm!

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Verwijderd schreef op 26 November 2002 @ 19:55:
Zou het wel middels ASP (of ASP.NET) kunnen?
Of bestaan er al webclients voor .NET ?

Want dan zou ik zelf wel een server kunnen draaien thuis ervoor :)
Bekijk mijn library: dotMSN
Dit verzorgt alle MSN Messenger communicatie voor .NET. Ik heb geen ervaring icm ASP.NET maar aangezien ASP.NET objecten in sessies kan behouden zou het goed kunnen dat je dit via een webinterface aan de praat krijgt. Ik heb alleen geen idee hoe ASP.NET vervolgens met events e.d. omgaat die de library aanroept (die zeer cruciaal zijn bij messenger clients).
Verder is MSN via PHP aardig om 1-malig een berichtje te sturen, maar verder kan je er weinig mee. Ik zou nog eerder voor een java-applet gaan oid die online-msn kan bieden, maar deze zijn ongetwijfeld al gemaakt.

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

Verwijderd schreef op 26 november 2002 @ 17:18:
De gesprekjes komen prima binnen met dat script anders :(
inderdaad, dat is precies tot wanneer het nog werkt, het protocol werkt namelijk als volgt:

- connect naar msn-server
- inloggen
- server stuurt nieuw ipadres van server
- connect naar nieuw adres
nu ben je 'aangemeld'
je gaat nu in een (oneindige) while lus je socket in de gaten houden
wanneer je een RNG commando binnen krijgt wil zeggen dat een andere gebruiker een oproep stuurt om met je praten.
dit commando bevat (onder andere) een nieuw ip en port waar je een socket naar moet openen om met die user te praten.
Tot zover nog alles ok
maar de connectie met deze user moet je ook in een oneindige lus gaan pollen op nieuwe berichten (of eventueel berichten terugsturen etc)
==> DEADLOCK

Wanneer er namelijk een nieuwe gebruiker met je wilt praten, stuurt hij het RNG request, maar aangezien je daar niet op kan reageren omdat je in een andere oneindige lus zit, werkt het dus niet.

Voor 1-op-1 user-interactie is misschien nog wel een manier te vinden, maar sowieso met meerdere mensen tegelijk praten kan dus niet.

je wilt dus eigenlijk dat bij het binnenkomen van een RNG opdracht je het script 'forked' om met die user apart verder te gaan. En dat gaat helaas niet in php

snappie?

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 16-08 06:44

CyberSnooP

^^^^ schrijft --->

snappie?
Nee, wat is het probleem met meerdere connecties tegelijk pollen in dezelfde lus? En als dat te ingewikkeld wordt kan ie altijd nog een nieuw script opstarten (efficient is anders) door de client een nieuw (i)frame te laten openen met daarin de parameters voor het nieuwe script. Ik geloof niet dat dit soort dingen het echt tegen gaan houden, een taal als PHP is krachtig genoeg om van alles mee te doen :)

|_____vakje______|


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja ik begin het te begrijpen ...
Lijkt me dat ik me het beste eerst kan verdiepen in:
- het Messenger protocol
- socket troep en pollen (?!)
- fork shit :)

Tips? ...

Acties:
  • 0 Henk 'm!

Verwijderd

je kunt idd met iframes gaan werken om verschillende threads te simuleren. Maar denk toch dat het een beetje ingewikkeld gaat worden.

Er is misschien een (heel klein beetje) gemakkelijker alternatief. Je zou een jabber client in php kunnen gaan maken. Het jabber protocol is namelijk zo gemaakt dat je alleen een verbinding hebt met de server en niet voor elke chat een aparte connectie nodig hebt. Nadeel is weer dat alles als een xml stream wordt verzonden. Zou je dus een pull parser in php moeten gebruiken. Gelukkig zijn er al wat bestaande php/jabber scripts

Zou je dus alleen nog een ui hier omheen moeten bouwen wat mogelijk is op de manier zoals hier boven beschreven (php/javascript/geen tijd limiet)

edit:

belangrijkste nog vergeten: jabber werkt ook met icq, yahoo, aol, etc

[ Voor 6% gewijzigd door Verwijderd op 26-11-2002 22:16 ]


Acties:
  • 0 Henk 'm!

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 16-08 06:44

CyberSnooP

^^^^ schrijft --->

Verwijderd schreef op 26 November 2002 @ 22:12:
Ja ik begin het te begrijpen ...
Lijkt me dat ik me het beste eerst kan verdiepen in:
- het Messenger protocol
- socket troep en pollen (?!)
- fork shit :)

Tips? ...
Ja, begin met het eerste :D. Er zijn best wat enthousiatelingen die het protocol hebben uitgewerkt in een verzameling HTML-filetjes. Verder kun je (denk aan de licenties!) open-source software bestuderen voor onduidelijke details.

En de eeuwige tip: Werk eerst je idee compleet uit, probeer te kijken welke onderdelen je kunt onderscheiden en hoe je die wilt gaan implementeren in PHP. PHP is niet echt uitgevonden voor dit soort spul, threading kent het al helemaal niet (derde puntje komt dus een beetje te vervallen).

|_____vakje______|


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thanks! (Heb gelukkig al veel ervaring met PHP , MySQL en DHTML) :)

Acties:
  • 0 Henk 'm!

Verwijderd

http://phpjabber.g-blog.net/Jabber

leuke php library voor jabber, misschien het je er wat aan

Acties:
  • 0 Henk 'm!

  • Sn3akz
  • Registratie: November 2000
  • Laatst online: 05-08 13:55

Acties:
  • 0 Henk 'm!

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

"The shell stopped unexpectedly and Explorer.exe was restarted."


Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Misschien kun je wel iets met een Java-Applet of desnoods met ActiveX doen :?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Moet ik toch eerst Java gaan leren ... haha :)
Maar dat ligt wel in de planning

Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Tja, als je doel is om MSN via een webpage (firewall dus) te gebruiken zou ik voor een gedeelde oplossing gaan. Een serverside component die constant draait (taal niet van belang) en die dus je MSN connectie in stand houdt en alle communicatie met de MSN servers verzorgt. En een (client of serverside) component die de eerste component pollt voor data er data (gesprekken) naartoe stuurt.

Op die manier heb je gewoon een "normale" MSN client, maar alleen de GUI is nogal anders. Je kunt er op deze manier zelfs verschillende interfaces voor maken. Een losstaand programma, een Java-applet of een webpage.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!

Pagina: 1