zoukankan      html  css  js  c++  java
  • html5 Websockets development guidance

    1. WebSockets -- full-duplex communication

    The main HTML5 pillars include Markup, CSS3, and JavaScript APIs

    For whole set of HTML5, visit html5rocks.com (google product)

     

    The URL

    The following image shows the WebSocket URL example in tokens:

    schema      host              port     server

       ws://example.com:8000/chat.php

    wss is supported as well and is the WebSocket equivalent to https for secure connections (SSL).

    Who's using WebSockets

    Name            Website                                            Description

    Gamooga       http://www.gamooga.com/                  Real-time backend for apps and games

    GitLive           http://gitlive.com/                               Notifications on GitHub projects

    Superfeedr     http://superfeedr.com/                       Real-time data pushing

    Pusher           http://pusher.com/                             Scalable real-time functionality API for web and mobile apps

    Smarkets       https://smarkets.com/                        Real-time betting

    IRC Cloud      https://www.irccloud.com/                   Chatting

    Two great resources containing a large variety of WebSocket demos are as follows:

       • http://www.websocket.org/demos.html

       • http://www.html5rocks.com/en/features/connectivity

    2. The WebSocket API web client

    WebSocket communication and data transmission is bidirectional, so we need two parties to establish it: a server and a client.

    HTML5 basics:

    • Markup HTML (.html)

            For more information about the HTML5 markup, consider visiting http://html5doctor.com/. There is a complete reference for the supported HTML5 tags at http://html5doctor.com/element-index/.

    • Styling CSS (.css)

             http://www.css3.info/ is a great resource for CSS3 and further reading.

    • Logic JavaScript (.js)

            The markup defines the structure and the CSS rules apply the styling. What about event handling and user actions? Well, here comes JavaScript! The WebSocket API is pure JavaScript, too!

    WebSocket API allows you to connect to a local or remote server, listen for messages, send data, and close the connection. Typical WebSocket workflow shows below:

    JavaScript provides an easy way to find out whether a browser can execute WebSocket-specific code:

    if (window.WebSocket) {   // validation check
    
      console.log("WebSockets supported.");                                               
    
      // Continue with the rest of the WebSockets-specific functionality…
    
    }
    
    else {
    
      console.log("WebSockets not supported.");
    
      alert("Consider updating your browser for a richer experience.");
    
    }

    Want to see which browsers do support the WebSocket protocol? There is an up-to-date resource available at http://caniuse.com/#feat=websockets.

    • The WebSocket object :var socket = new WebSocket("ws://echo.websocket.org");
    • Events: Open, Message, Close, and Error.

    You can handle them either by implementing the onopen, onmessage, onclose, and onerror functions respectively, or by using the addEventListener method.

    • Actions: The WebSocket protocol supports two main actions: send() and close().
    • Properties:

    Properties               Description

    url                            Returns the URL of the WebSocket  protocol Returns the protocol used by the server

    readyState                Reports the state of the connection and can take one of the following selfexplanatory values:

                  WebSocket.OPEN

                  WebSocket.CLOSED

                  WebSocket.CONNECTING

                  WebSocket.CLOSING

    bufferedAmount     Returns the total number of bytes that were queued when the send() method was called

    binaryType             Returns the binary data format we

    received                  when the onmessage event was raised

     The complete client example:

    index.html: 

    <!DOCTYPE html>
    <html>
    <head>
    <title>HTML5 WebSockets</title>
    <link rel="stylesheet" href="style.css" />
    <script src="chat.js"></script>
    </head>
    <body>
    <h1> HTML5 WebSocket chat. </h1>
    <input type="text" id="text-view" />
    <input type="button" id="send-button" value="Send!" />
    <input type="button" id="stop-button" value="Stop" />
    </br>
    <label id="status-label">Status</label>
    </body>
    </html>
    View Code

    Chat.js:

     1 window.onload = function() {
     2 var textView = document.getElementById("text-view");
     3 var buttonSend = document.getElementById("send-button");
     4 var buttonStop = document.getElementById("stop-button");
     5 var label = document.getElementById("status-label");
     6 var socket = new WebSocket("ws://echo.websocket.org");
     7 socket.onopen = function(event) {
     8 label.innerHTML = "Connection open";
     9 }
    10 socket.onmessage = function(event) {
    11 if (typeof event.data === "string") {
    12 label.innerHTML = label.innerHTML + "<br />" + event.data;
    13 }
    14 }
    15 socket.onclose = function(event) {
    16 var code = event.code;
    17 var reason = event.reason;
    18 var wasClean = event.wasClean;
    19 if (wasClean) {
    20 label.innerHTML = "Connection closed normally.";
    21 }
    22 else {
    23 label.innerHTML = "Connection closed with message: " +
    24 reason + " (Code: " + code + ")";
    25 }
    26 }
    27 socket.onerror = function(event) {
    28 label.innerHTML = "Error: " + event;
    29 }
    30 buttonSend.onclick = function() {
    31 if (socket.readyState == WebSocket.OPEN) {
    32 socket.send(textView.value);
    33 }
    34 }
    35 buttonStop.onclick = function() {
    36 if (socket.readyState == WebSocket.OPEN) {
    37 socket.close();
    38 }
    39 }
    40 }
    View Code

    Server side:

    Server                                                                  Client
    Create a server on localhost:8181  
    Start running
    Initial handshake: establish connection  <----------- Request connection
    Handle the incoming message  --------------------> Send message

    refer to book (p. 31):http://www.amazon.com/Getting-Started-HTML5-WebSocket-Programming/dp/1782166963

    create dll file in c#

  • 相关阅读:
    WinCE 手机互联
    Android 之 getSharedPreferences 和 getPreferences
    Android 之 ListView 点击响应代码?
    Android 之 selector
    昨天晚上被 Android 手机上的广告程序折磨了
    今天终于将第一个 Android NDK 程序编译、运行成功
    Android 4.0.1 源代码编译
    The connection to adb is down, and a severe error has occured.
    成绩转换
    兄弟郊游问题
  • 原文地址:https://www.cnblogs.com/bruceyo/p/3867518.html
Copyright © 2011-2022 走看看