Tagged: HTML5 Toggle Comment Threads | Keyboard Shortcuts

  • DerFichtl 10:08 am on January 31, 2011 Permalink
    Tags: chat, example, HTML5, , ,   

    PHP5 WebSocket Example – A Simple Chat 

    The classic example for websockets is a chat. This chat example has only 200 lines of code (excl. the Websocket class), is really easy to understand and customizable.

    More …

     
  • DerFichtl 11:40 pm on December 1, 2010 Permalink
    Tags: HTML5, ,   

    PHP Websocket Class new Version 

    Auf Anfrage einiger Leser habe ich jetzt die Klasse kommentiert und Informationen zur Lizenz hinzugefügt. An der Funktionalität hat sich nichts geändert. Die aktuelle Version 1.0.5 ist unter folgender URL zu finden: http://bohuco.net/labs/php-websocket-class/lib/WebSocketServer1.0.5.php.txt

    More …

     
  • DerFichtl 4:10 pm on July 22, 2010 Permalink
    Tags: , HTML5, , , ,   

    PHP WebSocket Server – The Handshake 

    WebSockets are the new cool boys in town, but the specs are in a very early state and so it’s hard to keep up to date with the different browser implementations …

    More …

     
    • the future 10:48 am on February 25, 2011 Permalink | Reply

      Thanks so much. I was having some real problems with my handshake.
      :)

    • :D 2:17 pm on December 27, 2012 Permalink | Reply

      my parkinson is still anmnnnciokalpw wj15455f32d

  • DerFichtl 8:07 pm on July 11, 2010 Permalink
    Tags: HTML5, , ,   

    HTML5 WebSockets Example 

    HTML5 WebSockets makes it possible to open a persistent connection to a server within a web-browser via javascript.

    More …

     
    • zcorpan 9:58 am on July 13, 2010 Permalink | Reply

      Firefox can’t open the connection for the same reason Chrome 6 dev can’t open the connection. You have implemented version -75 of the protocol (which Safari 5 and Chrome 5 use), while Firefox and Chrome 6 dev support version -76.

    • DerFichtl 2:37 pm on July 14, 2010 Permalink | Reply

      Thanks zcorpan for your advice … i have recoded my class, now it works with the new Firefox 4 Beta too.

    • deekobraz 9:15 pm on July 16, 2010 Permalink | Reply

      it was very interesting to read.
      I want to quote your post in my blog. It can?
      And you et an account on Twitter?

    • skybinary 2:18 pm on July 26, 2010 Permalink | Reply

      Hey, nice introduction to websockets thanks :)

      I have successfully implemented some examples but they only work from localhost.
      How can i tell apache/php to allow socket connections beyond localhost?

    • jsnoob 10:07 pm on July 28, 2010 Permalink | Reply

      I don’t understand the need for the eval:
      [ eval('var data = ' + msg.data + ';'); ]

      why can’t you just do a real var data = msg.data?

    • DerFichtl 10:23 pm on July 28, 2010 Permalink | Reply

      msg.data contains JSON as string … with eval i convert it to a real javascript object

    • deltaLeo 5:21 pm on September 13, 2010 Permalink | Reply

      Hi skybinary,

      Please ensure that the socket is not just listening for localhost calls.
      e.g., let’s say you are working with port 8181. Then if you type within a terminal ‘netstat -an | grep LISTEN’ and
      you see something like this ’127.0.0.1:8181′ that’s the root of your problem.
      So if you want to permit any incoming connection you should do something like this:
      $webSocket = new WebSocketServer(“0.0.0.0″, 8181, ‘process’);

    • David 5:21 pm on October 13, 2010 Permalink | Reply

      opening two windows with the example doesn’t seem to work.
      The first Window works but the second one not.
      Is it required and possible to set any parameter for the concerned window?

    • David 5:32 pm on October 13, 2010 Permalink | Reply

      After reloading both Browser-Windows it works and I get both cursers shown while the active one is correctly changeable while the other one is passive.
      In a list on the pic the IPs (surely the same) and the cursors are shown.

      Question is:
      1) how are the windows divided by the script
      2) why both windows had to be reloaded and why in the beginning just reloading the 2nd window didn’t show any cursor?

    • DerFichtl 7:10 am on October 14, 2010 Permalink | Reply

      Hi David, which browser (+ version) do you use? If you try with one chrome-window and one chrome inkognito window it should work … or two different browsers.

    • Ldup 8:57 pm on November 14, 2010 Permalink | Reply

      Hello, very thanks you for this! work!
      But i’m too trying PHP WebSocket(http://code.google.com/p/phpwebsocket/) simple example(Chat) but don’t work and i’m get error: Error: INVALID_STATE_ERR: DOM Exception 11
      And status is: WebSocket – status 0

      Maybe know how to fix this ? :-)

      Thanks for this and Good Luck!

    • DerFichtl 12:39 am on November 15, 2010 Permalink | Reply

      Thanks Ldup for your question. I have nothing to do with this project, but i can see that the maintainer is working on the project and he usually answers questions very quick.

    • Yves 8:07 pm on December 17, 2010 Permalink | Reply

      Hi, i have a problem with a scripts that is almost the same as yours. The eval function of the very first message received from the server gives me an Unexpected token ILLEGAL error. But all the other messages after the first one work great. When I read the first message with a console.log(msg.data) there is absolutely nothing strange in this message. Is there something special with the first message sent by the server?

    • cyberbobjr 7:56 pm on January 7, 2011 Permalink | Reply

      Hi,
      i have the same problem as Yves : the first message sent by the server raise always a onerror event on the client, the others messages works fine after… really strange… (chrome version 8.0.552.224)
      Thank you

    • DerFichtl 1:54 pm on January 12, 2011 Permalink | Reply

      Thanks for the comments, i can reproduce the problem and a quickfix is to wrap the eval in a try/catch block. i will look into the problem later, there seems to be a “hidden” char in the response …

    • Macs 12:00 pm on January 20, 2011 Permalink | Reply

      Do you plan to ad “wss” feature?
      this is the only option working for me behind firewall, simple “ws” fail to connect

    • adailton 6:42 pm on January 23, 2011 Permalink | Reply

      an error is occurring on the server can not answer the socket.

      php_exif.dll disabled the dll file that was giving error zend parameter in the library.

      I am using windows xp and windowdows 7 the same error.

      I’m from Brazil my net is networked to another pc

      image the error : http://img218.imageshack.us/i/imagemyj.gif/

    • adailton 6:48 pm on January 25, 2011 Permalink | Reply

      solve the problems agora ta All ok

      thanks for posting can clear my doubts valew old ^ ^

    • adailton 6:21 pm on February 26, 2011 Permalink | Reply

      thanks for posting this beautiful work.
      is being dealt a new server database that connects with
      javascript
      his name is jwebsocket a very good api
      to be compatible with Internet Explorer 6,7,8,9.

      http://jwebsocket.org/

    • DigitalLife 12:41 pm on March 6, 2011 Permalink | Reply

      How does this work? From the little I know about php the script gets called each time a browser opens an page. I understand that the server.php calls run so it doesn’t return like simple php scripts, but why aren’t there server instances for every user calling this script? Is it that the “require_once” makes only the first call of the script work and the other silently fail so there is only one server object? I don’t understand why there are not many WebSocketServer objects with each having only 1 client.
      (Sorry for my bad english, I’m out of training)

      • DerFichtl 9:57 pm on March 15, 2011 Permalink | Reply

        that is not a”typical” php-script which is opened in the browser via http … its a command line script, you can run it for example under linux oder mac osx via “php -q server.php” (if php is installed on the computer) … in this script is a endless-loop, so it runs until it is stopped with Crtl-C … hope that helps :)

    • Edska 3:58 pm on March 11, 2011 Permalink | Reply

      I have problem with this function – private function wrap($msg=”") { return chr(0).$msg.chr(255); }

      I get all info and at the end is this char – ÿ which is chr(255).
      Therefore at the client side I get error – “Invalid char”. If I remove “chr(255)” char “ÿ” is removed, but client side doesn’t work either.

    • Roy 6:59 pm on March 16, 2011 Permalink | Reply

      Hey, i’m tryng to get this to work.
      It still doesnt, and the reason is that crappy ‘hidden character’ that prevents json to be effectively interpreted, thus not appearing in the reply itself.
      here is the discovery:
      http://stackoverflow.com/questions/4880273/character-in-front-of-websocket-message
      But not the solution.I’m still looking for a good one to implement, or a way to get rid of that piece.

    • Roy 7:30 pm on March 16, 2011 Permalink | Reply

      Found a solution: by js, just use the replace function of javascript example, assume msg is the string returned by websocket.message function

      msg = $.parseJSON(msg.data.replace(”, ”));

      or, without jquery:

      msg = JSON.parse(msg.data.replace(”, ”));

      Hope someone will find this helpful to someone.

    • Roy 7:32 pm on March 16, 2011 Permalink | Reply

      Sorry, but the ascii code got interpreted.
      Between the first ” in the code, insert
      0
      without the space between, it will work, giving back your Json content.

    • elennaro 9:39 pm on April 9, 2011 Permalink | Reply

      Fixed memory leak on message quantity:

      Class WebsocketChatMessage {

      ….
      // Added destructor
      public function __destruct() {
      echo “menya stiraut ” . $this->text . “n”;
      unset($this->text);
      unset($this->username);
      unset($this->timestamp);
      }
      // End of added destructor

      ….

      }

      and in

      Class WebsocketChat {


      //added message limit
      private $maxmessage = 10;
      //End of changes in variables

      ….
      if ($msg->action == ‘chat’) {
      $text = filter_var($msg->text, FILTER_SANITIZE_STRING);
      $lastMessage = new WebsocketChatMessage($user->data['username'], $text . ” memory state ” . memory_get_usage(), time());

      $user->data['message'][] = $this->messages[] = &$lastMessage;

      //Begin of cleaning Checking if messages is too much

      if (count($this->messages) > $this->maxmessage) {
      //Cleaning old messages
      array_splice($this->messages, 0, 1);
      array_splice($user->data['message'], 0, 1);
      }
      //End of Cleaning
      }
      }
      }

      now the memory usage is clean and correct the script will live!

    • elennaro 9:42 pm on April 9, 2011 Permalink | Reply

      now who can help me with wss?
      i mean SSL for web stocket workaround.

    • Sanjeev 12:18 pm on May 25, 2011 Permalink | Reply

      I got ‘StartListening: Unable to bind socket – Address already in use.’ error when php -q server.php command execute in terminal.So web socket is not working.

      Please give me direction how can i test web socket properly working or not.

      Thank You

    • Digitalpassion 8:02 am on October 14, 2011 Permalink | Reply

      How much better is this than Ajax JSON callbacks?

    • Digitalpassion 8:02 am on October 14, 2011 Permalink | Reply

      How much better is this than Ajax JSON callbacks?

    • Fili Wiese 2:20 pm on November 1, 2011 Permalink | Reply

      Could you please update the code to support the new hybi-10 draft?

    • Fili Wiese 2:20 pm on November 1, 2011 Permalink | Reply

      Could you please update the code to support the new hybi-10 draft?

    • Arturs Birzgals 10:02 am on November 15, 2011 Permalink | Reply

      function hybi_decode($data){
      $bytes = $data;
      $data_length = “”;
      $mask = “”;
      $coded_data = “” ;
      $decoded_data = “”;
      $data_length = $bytes[1] & 127;
      if($data_length === 126){
      $mask = substr($bytes, 4, 8);
      $coded_data = substr($bytes, 8);
      }else if($data_length === 127){
      $mask = substr($bytes, 10, 14);
      $coded_data = substr($bytes, 14);
      }else{
      $mask = substr($bytes, 2, 6);
      $coded_data = substr($bytes, 6);
      }
      for($i=0;$i<strlen($coded_data);$i++){
      $decoded_data .= $coded_data[$i] ^ $mask[$i%4];
      }
      return $decoded_data;
      }

      function hybi_encode($data)
      {
      $frame = Array();
      $encoded = "";
      $frame[0] = 0×81;
      $data_length = strlen($data); if($data_length > 8;
      $frame[3] = $data_length & 0xFF;
      } for($i=0;$i<sizeof($frame);$i++){
      $encoded .= chr($frame[$i]);
      } $encoded .= $data;
      return $encoded;
      }

    • Arturs Birzgals 10:02 am on November 15, 2011 Permalink | Reply

      function hybi_decode($data){
      $bytes = $data;
      $data_length = “”;
      $mask = “”;
      $coded_data = “” ;
      $decoded_data = “”;
      $data_length = $bytes[1] & 127;
      if($data_length === 126){
      $mask = substr($bytes, 4, 8);
      $coded_data = substr($bytes, 8);
      }else if($data_length === 127){
      $mask = substr($bytes, 10, 14);
      $coded_data = substr($bytes, 14);
      }else{
      $mask = substr($bytes, 2, 6);
      $coded_data = substr($bytes, 6);
      }
      for($i=0;$i<strlen($coded_data);$i++){
      $decoded_data .= $coded_data[$i] ^ $mask[$i%4];
      }
      return $decoded_data;
      }

      function hybi_encode($data)
      {
      $frame = Array();
      $encoded = "";
      $frame[0] = 0×81;
      $data_length = strlen($data); if($data_length > 8;
      $frame[3] = $data_length & 0xFF;
      } for($i=0;$i<sizeof($frame);$i++){
      $encoded .= chr($frame[$i]);
      } $encoded .= $data;
      return $encoded;
      }

    • Paromatt 7:36 pm on March 22, 2012 Permalink | Reply

      Hi
      Please anyone who knows post how to get the “New URL for Example” working.
      I love to see working things before troubleshooting it on my pc later.

      I love websockets!
      matt

    • Paromatt 7:36 pm on March 22, 2012 Permalink | Reply

      Hi
      Please anyone who knows post how to get the “New URL for Example” working.
      I love to see working things before troubleshooting it on my pc later.

      I love websockets!
      matt

    • Elbriga 12:31 am on January 27, 2013 Permalink | Reply

      source code not showing

  • DerFichtl 7:39 am on July 9, 2010 Permalink
    Tags: , HTML5, , MobileMe, SproutCore   

    SproutCore Erfinder eröffnet HTML5-Firma 

    Der SproutCore Erfinder Charles Jolley verlässt Apple und gründet ein Unternehmen das sich mit der Entwicklung neuer Rich-Web Applikationen auf HTML5-basis beschäftigen wird.

    More …

     
  • DerFichtl 1:16 am on July 7, 2010 Permalink
    Tags: , , HTML5, mathML, , WebM,   

    Firefox 4.0 Beta: HTML5, WebM und Websockets 

    Die erste Beta-Version von Firefox 4.0 bringt einige neue geile Technologien für Web-Entwickler.  Via WebM und HTML5 können jetzt HD-Videos ohne zusätzliches Plugin im Browser angezeigt werden. Der neue HTML5 Parser wurde schneller gemacht und kann jetzt Inline-SVG und MathML.

    More …

     
    • Shirely Lagraize 10:58 am on July 7, 2010 Permalink | Reply

      I have to say, I enjoy reading your site. Maybe you could let me know how I can subscribing with it ? Also just thought I would tell you I found your page through yahoo.

  • DerFichtl 10:22 am on July 4, 2009 Permalink
    Tags: HTML5, w3c, XHTML   

    Der König ist tot, lang lebe …, NEIN er ist tot. 

    “Die XHTML2 Arbeitsgruppe wird aufgelöst”, das ging heute durch die Fachmedien. XHTML2 war von Anfang an ein typisches “Gut gemeint”-Projekt, und wie wir wissen ist “gut gemeint” das genaue Gegenteil von “gut gemacht”. Alles sollte durchdacht und perfekt werden, dabei hatte man sich schnell von der praktischen Anwendbarkeit verabschiedet und ist in theoretische Undurchsichtigkeit abgeglitten.

    More …

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
shift + esc
cancel