nodejs之socket.io編程

socket
  網絡上的程序實現雙向的數據連接,這個連接的一端成爲socket。
     
     1.Socket是一個持久連接。
 
     2.Socket是雙向通訊的。
    
Socket VS ajax輪詢
    
    ajax輪詢 , 是利用客戶端來發送請求,每隔幾秒發送一個http請求,服務器壓力大。
 
    Socket不會,一旦連接不會斷開,能夠實現實時通訊。 好比微信的朋友圈更新提示。即時聊天通信。
2 服務端和web端

在服務端和客戶端進行數據交互時(emit ------> on ),爲何要給服務端on綁定一個事件(全部的數據最終都要發回給服務器)html

  爲何 給瀏覽器on綁定一個事件(服務器能夠統一的觸發全部的web端的事件)前端

index.html 代碼以下:jquery

<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font: 13px Helvetica, Arial; }
form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
#messages { list-style-type: none; margin: 0; padding: 0; }
#messages li { padding: 5px 10px; }
#messages li:nth-child(odd) { background: #eee; }
</style>
</head>
<body>
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off" /><button>Send</button>
</form>
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
$(function () {
var socket = io();
// on是事件的綁定 emit是事件的觸發
// 發送了數據#m =>input
$('form').submit(function(){
//觸發了chat message 事件
//發送了#m => input 裏面的value值
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
//在客戶端 捕獲chat message事件
socket.on('chat message', function(msg){
$('#messages').append($('<li>').text(msg));
});
});
</script>
 
 
server.js代碼以下:
//一個頁面入口(服務端
//var express = require('express')
//var app = express()
var app = require('express')()//鏈式語法
var http = require('http').Server(app)
var io = require('socket.io')(http);

//2。express 路由
app.get('/',(req, res)=>{
res.sendFile(__dirname+'/index.html')
})
// app.get('/list',(req, res)=>{
// res.send('<h1>hello world list !</h1>')
// })

io.on('connection', function(socket){
console.log('a user connected');
//socket = client
socket.on('disconnect', function(){
console.log('user disconnected');
});
//綁定了一個chat message事件 ,在前端觸發
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
});

//1.建立一個監聽端口,開啓服務器

http.listen(3000, ()=>{
console.log('listening 3000')
})
相關文章
相關標籤/搜索