亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

在vue2.x里面簡(jiǎn)單使用socketio問題

 更新時(shí)間:2022年10月09日 09:43:36   作者:The_more_more  
這篇文章主要介紹了在vue2.x里面簡(jiǎn)單使用socketio問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前言

首先來了解一下什么是socketio:

  • 使用流行的Web應(yīng)用程序堆棧(如LAMP(PHP))編寫聊天應(yīng)用程序通常非常困難。它涉及輪詢服務(wù)器以查找更改,跟蹤時(shí)間戳,并且它比應(yīng)有的速度慢得多。
  • 傳統(tǒng)上,套接字是構(gòu)建大多數(shù)實(shí)時(shí)聊天系統(tǒng)的解決方案,在客戶端和服務(wù)器之間提供雙向通信通道。
  • 這意味著服務(wù)器可以將消息推送到客戶端。每當(dāng)您編寫聊天消息時(shí),其想法是服務(wù)器將獲取它并將其推送到所有其他連接的客戶端。

簡(jiǎn)單的來說就是一般的邏輯就是服務(wù)器響應(yīng)客戶端,而socketio基于webstorm實(shí)現(xiàn)了服務(wù)端推送到其他的客戶端,不再處于被動(dòng)的局面。

服務(wù)端

新建好文件夾,打開終端輸入:

npm init -y

初始好包之后下載好express,在官網(wǎng)有傳統(tǒng)的http,這里以express來演示:

npm i express@4.18.1

下載好socketio

npm i socket.io@4.5.1

編寫好相應(yīng)的代碼:

const app = require('express')()
const server = require('http').Server(app)
const io = require('socket.io')(server, { cors: true })
app.all('*', function (req, res, next) {
? res.header('Access-Control-Allow-Origin', '*')
? res.header('Access-Control-Allow-Headers', 'Origin,X-Requested-With,Accept,Content-type')
? res.header('Access-Control-Allow-Credentials', true)
? res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
? res.header('Content-Type', 'application/json;charset=utf-8')
? if (req.method.toLowerCase() == 'options') res.sendStatus(200)
? else next()
})
server.listen(3030, () => {
? console.log('listening on http://localhost:3030')
})

這里寫了一些跨域的配置,監(jiān)聽的端口號(hào)為3030,接著在下面書寫下列代碼:

io.on('connect', (socket) => {
? console.log('有人連接成功了')
? socket.on('my other event', function (data) {
? ? console.log(data)
? ? socket.emit('news', data)
? })
? socket.emit('open', {data:'恭喜你收到了信息'})
? // 監(jiān)聽客戶端斷開
? socket.on('disconnect', () => {
? ? console.log('客戶端斷開')
? })
})

connect監(jiān)聽是否有人連接,如果客戶端有人連接了就會(huì)觸發(fā)回調(diào),socket就會(huì)收到一些所需的事件觸發(fā)

客戶端

在vue2.x里面我們同樣要下載包:

npm i socket.io-client@3.1.0 vue-socket.io@3.0.10

在入口文件里面引入:

// socket.io
import VueSocketIO from 'vue-socket.io'
import SocketIO from 'socket.io-client'
Vue.use(
? new VueSocketIO({
? ? debug: false,
? ? connection: SocketIO('http://127.0.0.1:3030', {
? ? ? autoConnect: false // 取消自動(dòng)連接 ? ??
? ? }),
? ? extraHeaders: { 'Access-Control-Allow-Origin': '*' }
? })
)

這里的配置項(xiàng)有很多,可以去官網(wǎng)更好的了解,這里傳入的網(wǎng)址也就是我們監(jiān)聽的端口

在一個(gè)干凈的頁面書寫demo:

<template>
? <div class="wrap">
? ? <button @click="connected">連接Socket</button>
? ? <button @click="socketSendmsg">發(fā)送數(shù)據(jù)</button>
? </div>
</template>
<script>
export default {
? methods: {
? ? connected() {
? ? ? this.$socket.open() // 開始連接socket
? ? },
? ? socketSendmsg() {
? ? ? this.$socket.emit('my other event', { my: 'data' })
? ? }
? },
? sockets: {
? ? connecting() {
? ? ? console.log('正在連接')
? ? },
? ? disconnect() {
? ? ? console.log('Socket 斷開')
? ? },
? ? connect_failed() {
? ? ? console.log('連接失敗')
? ? },
? ? connect() {
? ? ? console.log('socket connected')
? ? },
? ? news(data) {
? ? ? console.log(data)
? ? },
? ? open(data) {
? ? ? console.log(data)
? ? }
? }
}
</script>

使用介紹及流程

使用:node app.js啟動(dòng)服務(wù)端,npm run serve啟動(dòng)客戶端

頁面會(huì)出現(xiàn)兩個(gè)按鈕,按下第一個(gè)就會(huì)開始連接,這時(shí)候服務(wù)器就會(huì)打印有人連接了,點(diǎn)擊發(fā)送消息就會(huì)觸發(fā)this.$socket.emit('my other event', { my: 'data' })第一個(gè)參數(shù)就是需要響應(yīng)服務(wù)端的名稱,第二個(gè)就是我們傳遞的數(shù)據(jù),這時(shí)候服務(wù)端收到數(shù)據(jù)就會(huì)打印在終端:

socket.on('my other event', function (data) {
? ? console.log(data)
? ? socket.emit('news', data)
? })

這時(shí)候服務(wù)端觸發(fā) socket.emit('news', data)第一個(gè)參數(shù)就是給到客戶端的名稱,第二個(gè)就是上一個(gè)函數(shù)收到的結(jié)果,這里是原封不動(dòng)返回出去,到了客戶端里面再sockets這個(gè)對(duì)象里面就可以寫上'new'的函數(shù)來接收,參數(shù)就是服務(wù)器給我們的數(shù)據(jù),這里直接打印在控制臺(tái)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue項(xiàng)目如何實(shí)現(xiàn)切換主題色思路

    Vue項(xiàng)目如何實(shí)現(xiàn)切換主題色思路

    這篇文章主要介紹了Vue項(xiàng)目如何實(shí)現(xiàn)切換主題色思路,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 如何在vue-cli中使用css-loader實(shí)現(xiàn)css module

    如何在vue-cli中使用css-loader實(shí)現(xiàn)css module

    這篇文章主要介紹了如何在vue-cli中使用css-loader實(shí)現(xiàn)css module,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2021-01-01
  • vue3生成隨機(jī)密碼的示例代碼

    vue3生成隨機(jī)密碼的示例代碼

    本文主要介紹了vue3生成隨機(jī)密碼的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 公共Hooks封裝報(bào)表導(dǎo)出useExportExcel實(shí)現(xiàn)詳解

    公共Hooks封裝報(bào)表導(dǎo)出useExportExcel實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了公共Hooks封裝報(bào)表導(dǎo)出useExportExcel實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 利用vue3自己實(shí)現(xiàn)計(jì)數(shù)功能組件封裝實(shí)例

    利用vue3自己實(shí)現(xiàn)計(jì)數(shù)功能組件封裝實(shí)例

    組件(Component) 是Vue.js最強(qiáng)大的功能之一,組件可以擴(kuò)展 HTML 元素,封裝可重用的代碼,這篇文章主要給大家介紹了關(guān)于利用vue3自己實(shí)現(xiàn)計(jì)數(shù)功能組件封裝的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • vue.js—定義全局變量、函數(shù)的方式

    vue.js—定義全局變量、函數(shù)的方式

    這篇文章主要介紹了vue.js—定義全局變量、函數(shù)的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 通用vue組件化登錄頁面實(shí)例代碼

    通用vue組件化登錄頁面實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于通用vue組件化登錄頁面的相關(guān)資料,文中通過圖文以及實(shí)例代碼將解決的辦法介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-08-08
  • 在vue框架下使用指令vue add element安裝element報(bào)錯(cuò)問題

    在vue框架下使用指令vue add element安裝element報(bào)錯(cuò)問題

    這篇文章主要介紹了在vue框架下使用指令vue add element安裝element報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue實(shí)現(xiàn)移動(dòng)端拖拽懸浮按鈕

    vue實(shí)現(xiàn)移動(dòng)端拖拽懸浮按鈕

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)移動(dòng)端拖拽懸浮按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Vue?運(yùn)行高德地圖官方樣例,設(shè)置class無效的解決

    Vue?運(yùn)行高德地圖官方樣例,設(shè)置class無效的解決

    這篇文章主要介紹了Vue?運(yùn)行高德地圖官方樣例,設(shè)置class無效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評(píng)論