socket.io - alternative ways for real-time application

25
SOCKET.IO – ALTERNATIVE WAYS FOR REAL-TIME APPLICATION CREATED BY VORAKAMOL C.

Upload: vorakamol-choonhasakulchok

Post on 10-May-2015

1.435 views

Category:

Technology


1 download

DESCRIPTION

This slide will describe about what is Socket.IO including how to make use of it

TRANSCRIPT

Page 1: Socket.IO - Alternative Ways for Real-time Application

SOCKET.IO – ALTERNATIVE WAYS

FOR REAL-TIME APPLICATION CREATED BY VORAKAMOL C.

Page 2: Socket.IO - Alternative Ways for Real-time Application

WHAT IS SOCKET.IO ?

CREATED BY VORAKAMOL C.

Page 3: Socket.IO - Alternative Ways for Real-time Application

NOOOOOO!

CREATED BY VORAKAMOL C.

Page 4: Socket.IO - Alternative Ways for Real-time Application

SOCKET.IO - NODE.JS MODULE

FOR REAL-TIME EXCHANGE DATA

BETWEEN SERVER AND CLIENT

CREATED BY VORAKAMOL C.

Page 5: Socket.IO - Alternative Ways for Real-time Application

IMAGINE OF TRADITIONAL POLLING…

CREATED BY VORAKAMOL C.

Page 6: Socket.IO - Alternative Ways for Real-time Application

TRADITIONAL POLLING

Client Server

Request

Response

Request

Response

Next 30 second…

.

.

.

Request

Response

Next 30 second…

CREATED BY VORAKAMOL C.

Page 7: Socket.IO - Alternative Ways for Real-time Application

CLIENT PERIODICALLY SENT REQUEST

TO CHECK WITH SERVER

EVEN THOUGH THERE IS NOTHING

CHANGE IN DATA

CREATED BY VORAKAMOL C.

Page 8: Socket.IO - Alternative Ways for Real-time Application

SERVER HAS TO HANDLE A LOT OF

UNNECESSARY REQUEST

CREATED BY VORAKAMOL C.

Page 9: Socket.IO - Alternative Ways for Real-time Application

NOW, TAKE A BRIEFLY

LOOK INTO SOCKET.IO

CREATED BY VORAKAMOL C.

Page 10: Socket.IO - Alternative Ways for Real-time Application

1. REAL-TIME EXCHANGE DATA

BETWEEN SERVER AND CLIENT

CREATED BY VORAKAMOL C.

Page 11: Socket.IO - Alternative Ways for Real-time Application

2. VARIOUS TRANSPORTATION METHOD

WebSocket

Flash Socket

HTMLFILE

XHR Polling

JSONP Polling

Fallback method

CREATED BY VORAKAMOL C.

Page 12: Socket.IO - Alternative Ways for Real-time Application

3. PURELY WRITTEN IN JAVASCRIPT

ON CLIENT-SIDE WHICH RUN IN THE

BROWSER AND SERVER-SIDE

CREATED BY VORAKAMOL C.

Page 13: Socket.IO - Alternative Ways for Real-time Application

4. CROSS BROWSER AND PLATFORM

Support a lot of browser on both PC and

Mobile

3rd Party Open Source implemented for

Android, iOS, etc…

CREATED BY VORAKAMOL C.

Page 14: Socket.IO - Alternative Ways for Real-time Application

GET STARTED WITH

SOCKET.IO

CREATED BY VORAKAMOL C.

Page 15: Socket.IO - Alternative Ways for Real-time Application

1. SETTING UP ENVIRONMENT

ON SERVER-SIDE

Installing Socket.io, express module in target folder

npm install socket.io express

CREATED BY VORAKAMOL C.

Page 16: Socket.IO - Alternative Ways for Real-time Application

SENDER

RECEIVER

emit("test", {v1: "abc", v2:"def"});

signaling data

socket.on("test", function(data){

console.log("Received data is " + data);

});

BASIC UNDERSTANDING

CREATED BY VORAKAMOL C.

Page 17: Socket.IO - Alternative Ways for Real-time Application

2. CODING ON SERVER-SIDE

var socket = require('socket.io');

var express = require('express');

var http = require('http');

var app = express();

var server = http.createServer(app);

var io = socket.listen( server );

io.sockets.on('connection', function(socket){

socket.on('user_login', function(data){

console.log(data.username + " enters the system!");

io.sockets.socket(socket.id).emit('login_success');

});

});

server.listen(8080);

app.js

When

received a

signal called

“user_login”,

execute

statement

inside

CREATED BY VORAKAMOL C.

Page 18: Socket.IO - Alternative Ways for Real-time Application

3. CODING ON CLIENT-SIDE

<html>

<head>

<script src="scripts/socket.io/node_modules/socket.io-client/dist/socket.io.js"></script>

<script src="scripts/jquery-1.11.0.min.js"></script>

<script>

$(function(){

var socket = io.connect( 'http://10.170.23.18:8080' );

socket.on('connect', function(data){

socket.on('login_success', function(){

$('#login_area').html("Login Success!");

});

});

$('#login_btn').click(function(){

socket.emit('user_login', {username: $('#login_textbox').val()});

});

});

</script>

</head>

index.php

CREATED BY VORAKAMOL C.

Page 19: Socket.IO - Alternative Ways for Real-time Application

3. CODING ON CLIENT-SIDE

<body>

<div id="login_area">

Enter name: <input type="text" id="login_textbox" />

<button type="button" id="login_btn">Login!</button>

</div>

</body>

</html>

index.php

CREATED BY VORAKAMOL C.

Page 20: Socket.IO - Alternative Ways for Real-time Application

4. LET’S SEE THE OUTPUT

STARTING SERVER

CREATED BY VORAKAMOL C.

Page 21: Socket.IO - Alternative Ways for Real-time Application

4. LET’S SEE THE OUTPUT

OPENING WEBSITE

CONNECTION HAS

BEEN ESTABLISHED

TO SERVER

CREATED BY VORAKAMOL C.

Page 22: Socket.IO - Alternative Ways for Real-time Application

4. LET’S SEE THE OUTPUT

TYPING THE NAME

AND CLICK LOGIN

BUTTON

CLIENT WILL EMIT THE SIGNAL CALLED “user_login” ALONG WITH ARGUMENT

CALLED “username” TO THE SERVER

CREATED BY VORAKAMOL C.

Page 23: Socket.IO - Alternative Ways for Real-time Application

4. LET’S SEE THE OUTPUT

SERVER RECEIVED THE SIGNAL CALLED “user_login” ALONG WITH

USERNAME. NEXT, THE SERVER WILL SHOW THE NAME OF THE USER

WHO LOG INTO THE SYSTEM AND EMIT THE SIGNAL CALLED

“login_success” BACK TO THAT CLIENT IN ORDER TO TELL THE CLIENT

THAT LOGIN PROCESS IS SUCCESS CREATED BY VORAKAMOL C.

Page 24: Socket.IO - Alternative Ways for Real-time Application

4. LET’S SEE THE OUTPUT

WHEN THE CLIENT RECEIVED THE SIGNAL CALLED “login_success”,

THE MESSAGE “Login Success!” WILL SHOW UP ON THE SCREEN

CREATED BY VORAKAMOL C.

Page 25: Socket.IO - Alternative Ways for Real-time Application

REFERENCES

• http://socket.io/

• https://github.com/LearnBoost/Socket.IO/wiki/Configuring-

Socket.IO

• http://java.dzone.com/articles/getting-started-socketio-and

• http://www.sitepoint.com/chat-application-using-socket-io/

• http://code.tutsplus.com/tutorials/real-time-chat-with-nodejs-

socketio-and-expressjs--net-31708

• http://tamas.io/advanced-chat-using-node-js-and-socket-io-

episode-1/

• http://en.wikipedia.org/wiki/Socket.IO

CREATED BY VORAKAMOL C.