Mais conteúdo relacionado Semelhante a Node worshop Realtime - Socket.io (20) Node worshop Realtime - Socket.io1. MAKE WEB REAL
RealTime Socket.io
Caesar Chi
http://about.me/clonn
22. • WebSocket
• Adobe® Flash® Socket
• AJAX long polling
• AJAX multipart streaming
• Forever Iframe
• JSONP Polling
24. var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
var socket = io.connect();
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
25. var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
var socketio = require('socket.io'),
io;
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
28. server = http.createServer(app);
server.listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
require('./io.server').io(server);
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<script src="/javascripts/io.client.js"></script>
29. var socketio = require('socket.io'),
io;
exports.io = function (server) {
io = socketio.listen(server);
io.sockets.on('connection', function (socket) {
socket.emit('init', {
id: socket.id
});
});
};
30. var socket = io.connect(),
socket.on('init', function (data) {
concole.log(data);
});
40. io.configure('production', function(){
io.enable('browser client etag');
io.set('log level', 1);
io.set('transports', [
'websocket'
, 'flashsocket'
, 'htmlfile'
, 'xhr-polling'
, 'jsonp-polling'
]);
});
io.configure('development', function(){
io.set('transports', ['websocket']);
});
41. io.configure('production', function(){
io.enable('browser client etag');
io.set('log level', 1);
io.set('transports', [
'websocket'
, 'flashsocket' NODE_ENV=production node app.js
, 'htmlfile'
, 'xhr-polling'
, 'jsonp-polling'
]);
});
io.configure('development', function(){
io.set('transports', ['websocket']);
});
42. io.configure('production', function(){
io.enable('browser client etag');
io.set('log level', 1);
io.set('transports', [
'websocket'
, 'flashsocket' NODE_ENV=production node app.js
, 'htmlfile'
, 'xhr-polling'
, 'jsonp-polling'
]);
});
io.configure('development', function(){
io.set('transports', ['websocket']);
});
NODE_ENV=development node app.js
44. // assuming io is the Socket.IO server object
io.configure(function () {
io.set("transports", ["xhr-polling"]);
io.set("polling duration", 10);
});
48. {
headers: req.headers
// <Object> the headers of the request
, time: (new Date) +''
// <String> date time of the connection
, address: socket.address()
// <Object> remoteAddress and remotePort object
, xdomain: !!headers.origin
// <Boolean> was it a cross domain request?
, secure: socket.secure
// <Boolean> https connection
, issued: +date
// <Number> EPOCH of when the handshake was created
, url: request.url
// <String> the entrance path of the request
, query: data.query
// <Object> the result of url.parse().query or a empty object
}
50. var io = require('socket.io').listen(80);
io.configure(function (){
io.set('authorization', function (handshakeData, callback) {
handshakeData.userData = {
‘name’: ‘Caesar’,
‘age’: 18
};
callback(null, true); // error first callback style
});
});
接上 User Connection
Notas do Editor \n Node &#x958B;&#x767C;&#x76EE;&#x524D;&#x5C31;&#x50CF;&#x662F;&#x7A4D;&#x6728;&#x4E00;&#x6A23;&#xFF0C;&#x9700;&#x8981;&#x81EA;&#x5DF1;&#x62FC;&#x6E4A;&#x5F88;&#x591A;&#x6771;&#x897F;&#x90FD;&#x8981;&#x9760;&#x81EA;&#x5DF1;&#x53BB;&#x7D44;&#x5408;&#xFF0C;&#x5BE6;&#x9A57;&#xFF0C;&#x8A0E;&#x8AD6;&#x3002;\n\n\n \n \n \n \n \n \n CPU\n MEM\n\n user \n \n &#x524D;&#x5F8C;&#x7AEF;&#x90FD;&#x4E00;&#x8D77;&#x5BEB; JavaScript\n \n \n \n \n client, server , socket.io version\n \n \n \n \n \n read file parts\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n &#x975E;&#x963B;&#x585E;&#x3001;&#x4E8B;&#x4EF6;&#x9A45;&#x52D5;&#xFF1F;&#x8DDF;&#x5927;&#x5BB6;&#x8AAA;&#x660E;&#x4E00;&#x6B21;\n &#x975E;&#x963B;&#x585E;&#x3001;&#x4E8B;&#x4EF6;&#x9A45;&#x52D5;&#xFF1F;&#x8DDF;&#x5927;&#x5BB6;&#x8AAA;&#x660E;&#x4E00;&#x6B21;\n &#x975E;&#x963B;&#x585E;&#x3001;&#x4E8B;&#x4EF6;&#x9A45;&#x52D5;&#xFF1F;&#x8DDF;&#x5927;&#x5BB6;&#x8AAA;&#x660E;&#x4E00;&#x6B21;\n \n \n