Socket.io+Nodejs通訊實例


具體源碼:Socket

目錄結構
D:.
│ package.json
│ server.js

└─public
index.html
socket.io.js

需要的條件


  • socket.io.js 供前端界面初始化io
  • socket.io 供NodeJs端提供socket方法

socket.io.js存在於socket.io-client

socket.io存在於socket.io

socket.io服務端API文檔

socket.io-client客戶端的API文檔

演示的功能


  • 客戶端發送消息給服務端

  • 后端觸發事件告知客戶端

  • 客戶端離開觸發服務端事件

服務端


server.js

var express = require('express'); 
var app = express();

var server = require('http').createServer(app);
var io = require('socket.io')(server);

app.use('/', express.static(__dirname + '/public')); 

server.listen(80);

//socket部分
io.on('connection', function(socket) {
    //接收並處理客戶端的hi事件
    socket.on('hi', function(data) {
        console.log(data);

        //觸發客戶端事件c_hi
        socket.emit('c_hi','hello too!')
    })

    //斷開事件
    socket.on('disconnect', function(data) {
    	console.log('斷開',data)
        socket.emit('c_leave','離開');
        //socket.broadcast用於向整個網絡廣播(除自己之外)
        //socket.broadcast.emit('c_leave','某某人離開了')
    })

});
  • connection用來處理socket鏈接事件
  • disconnect處理連接斷開事件
  • 后端接受前端事件通過socket.on(EventName,function(date){})
  • 后端觸發前端事件通過socket.emit(EventName,msg)

這個后端演示了,前端發送消息給后端,觸發hi事件,hi事件通過回調在觸發客戶端定義的c_hi事件告知前端。

客戶端


index.html

<!DOCTYPE html>
<html>

<head>
    <title>socket</title>
</head>

<body>


<button id="sendBtn">發送消息</button>

<button id="leaveBtn">離開</button>

</body>
<script type="text/javascript" src="./socket.io.js"></script>
<script type="text/javascript">
    var socket=io.connect('localhost:80'),//與服務器進行連接
        send=document.getElementById('sendBtn'),
        leave=document.getElementById('leaveBtn');

    send.onclick=function(){
        socket.emit('hi', 'hello!');
    }

    leave.onclick=function(){
        window.location.href="about:blank";
        window.close()
        socket.emit('leave', 'leave');
    }

    //接收來自服務端的信息事件c_hi
    socket.on('c_hi',function(msg){
        alert(msg)
    })

    // socket.on('c_leave',function(msg){
    //     alert(msg)
    // })

</script>

</html>

  • 發送消息按鈕用來給服務端發送信息,觸發服務端定義的hi事件。
  • 離開頁面按鈕用來離開頁面,也就是socket會自動斷開。觸發服務端定義的disconnect。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM