node.js中socket.io學習教學介紹(二)
socket.io提供了基於事件的即時雙向通訊,以下這篇文章主要給大家介紹了socket.io基本應用的相關資料,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
前言
Socket.IO支援及時、雙向與基於事件的交流。它可以在每個平台、每個瀏覽器和每個裝置上運作,可靠性和速度同樣穩定。
即時分析:將資料推送到客戶端,這些客戶端會被表示為即時計數器,圖表或日誌客戶。
即時通訊與聊天:只需幾行程式碼即可寫成一個Socket.IO的”Hello,World」聊天應用程式。
二進位串流傳輸:從1.0版本開始,Socket.IO支援任何形式的二進位檔案傳輸,例如:圖片,視頻,音訊等。
文檔合併:允許多個使用者同時編輯一個文檔,並且能夠看到每個使用者所做的修改。
服務端與客戶端連接
socket.io同時提供了服務端和客戶端的API
服務端socket.io必須綁定一個http.Server實例
#綁定http.Server
1、隱含綁定
透過實例化時傳入連接埠或實例化後呼叫listen或attach函數進行隱式綁定。 socket.io內部實例化並監聽http.Server
實例化時傳入連接埠
let io = require('socket.io')(3000)
直接透過listen或attach函數綁定。 listen與attach同義
let io = require('socket.io') io.listen(3000) // io.attach(3000)
2、顯示綁定
可以手動指定http.Server
實例化時綁定
let server = require('http').Server(); let io = require('socket.io')(server) server.listen(3000)
透過listen或attach綁定
let server = require('http').Server(); let io = require('socket.io')() io.listen(server) // io.attach(server) server.listen(3000)
可以綁定express或koa等http框架
express
let app = require('express') let server = require('http').Server(app) let io = require('socket.io')(server) app.listen(3000)
koa
let app = require('koa')() let server = require('http').Server(app.callback()) let io = require('socket.io')(server) app.listen(3000)
監聽連線狀態
當伺服器端與客戶端連線成功時,服務端會監聽到connection和connect事件(connection與connect同義), 用戶端會監聽到connect事件, 中斷連線時服務端的對應到客戶端的socket與客戶端均會均會監聽到disconnect事件
服務端程式碼
let server = require('http').Server() let io = require('socket.io')(server) server.listen(3000); io.on('connection', socket => { console.log('connect') socket.on('disconnect', () => { console.log('disconnect') }) socket.disconnect() })
執行後列印
connect disconnect
客戶端程式碼
let socket = io('http://localhost:3000') socket.on('connect', () => { console.log('connect') }) socket.on('disconnect', () => { console.log('disconnect') })
運行後列印
connect disconnect
#傳輸資料
let server = require('http').Server() let io = require('socket.io')(server) server.listen(3000); io.on('connection', socket => { socket.on('random', value => { console.log(value) if (value > 0.95) { if (typeof socket.warning === 'undefined') socket.warning = 0 setTimeout(() => { socket.emit('warn', ++socket.warning) }, 1000) } }) })
socket.warning
let socket = io('http://localhost:3000') let interval = setInterval(() => { socket.emit('random', Math.random()) }, 500) socket.on('warn', count => { console.log('warning count: ' + count) }) socket.on('disconnect', () => { clearInterval(interval) })
##傳輸流
io.on('connection', function (socket) { let stream = ss.createStream() ss(socket).emit('script', stream) fs.createReadStream(__filename).pipe(stream) })
let socket = io('http://localhost:3000') ss(socket).on('script', stream => { let buffer = '' stream.on('data', data => { buffer += data.toString() }) stream.on('end', () => { console.log(buffer) }) })
以上是node.js中socket.io學習教學介紹(二)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

基於無阻塞、事件驅動建立的Node服務,具有記憶體消耗低的優點,非常適合處理海量的網路請求。在海量請求的前提下,就需要考慮「記憶體控制」的相關問題了。 1. V8的垃圾回收機制與記憶體限制 Js由垃圾回收機

選擇一個Node的Docker映像看起來像是小事,但是映像的大小和潛在漏洞可能會對你的CI/CD流程和安全造成重大的影響。那我們要如何選擇一個最好Node.js Docker映像呢?

Node 19已正式發布,以下這篇文章就來帶大家詳解了解Node.js 19的 6 大特性,希望對大家有幫助!

文件模組是對底層文件操作的封裝,例如文件讀寫/打開關閉/刪除添加等等文件模組最大的特點就是所有的方法都提供的**同步**和**異步**兩個版本,具有sync 字尾的方法都是同步方法,沒有的都是異

事件循環是 Node.js 的基本組成部分,透過確保主執行緒不被阻塞來實現非同步編程,了解事件循環對建立高效應用程式至關重要。以下這篇文章就來帶大家深入了解Node中的事件循環 ,希望對大家有幫助!

如何用pkg打包nodejs可執行檔?以下這篇文章跟大家介紹一下使用pkg將Node專案打包為執行檔的方法,希望對大家有幫助!
