日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

socket.io 之 engine.io

發(fā)布時(shí)間:2025/3/21 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 socket.io 之 engine.io 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

engine.io

實(shí)現(xiàn)跨瀏覽器、跨設(shè)備雙向通信層

通信:Emitter

class Emitter {_subs: {};construtor (params?: object) {return(params && this.mixin(params));}mixin (params) {for (let key in Emitter.prototype) {params[key] = Emitter.prototype[key];}return params; }on (event, fn) {(this._subs[event] = this._subs[event] || []).push(fn);return this;}once (event, fn) {function on () {this.off(event, fn);fn.apply(this, arguments);}on.fn = fn;this.on(event, on);return this;}off (event, fn) {if (0 === arguments.length) {this._subs = {};return this;}let callbacks = this._subs[event];if (!callbacks || !callbacks.length === 0) return this;if (1 === arguments.length) {delete this._subs[event];return this;}let cb;for (let i = 0; i < callbacks.length; i++) {cb = callbacks[i];if (cb === fn || cb.fn === fn) {callbacks.splice(i, 1);break;}}return this;}emit (event, ...args?: any) {callbacks = this._subs[event];callbacks.forEach((item)=>{item.apply(this.args);});return this;}}

transports

base class [Transport]

websocket

class WS extends Transport {name: string = 'websocket';supportsBinary: boolean = true;constructor (params) {super(params);}doOpen () {const uri = this.uri();const protocols = this.protocols;let opts = {agent: this.agent}// SSL options for Node.js clientopts.pfx = this.pfx;opts.key = this.key;opts.passphrase = this.passphrase;opts.cert = this.cert;opts.ca = this.ca;opts.ciphers = this.ciphers;opts.rejectUnauthorized = this.rejectUnauthorized;if (this.extraHeaders) {opts.headers = this.extraHeaders;}if (this.localAddress) {opts.localAddress = this.localAddress;}try {this.ws = this.usingBrowserWebSocket ? (protocols ? new WebSocket(uri, protocols) : new WebSocket(uri)) : new WebSocket(uri, protocols, opts);} catch (err) {return this.emit('error', err);}this.addEventListeners();}doClose () {if (typeof this.ws !== 'undefined') {this.ws.close();}}write () {}addEventListener () {this.ws.onopen = () => {this.onOpen();}this.ws.onclose = () => {this.onClose();}this.ws.onmessage = (ev) => {this.onData(ev.data);}this.ws.onerror = () => {this.onError('websocket error', e);}} }

總結(jié)

以上是生活随笔為你收集整理的socket.io 之 engine.io的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。