vue3 使用socket的完整代碼
Vue3 客戶端
首先我們下載依賴(lài) socket.io-client
npm install socket.io-client --save
socket.js
import io from 'socket.io-client'
// 鏈接 服務(wù)端
const socket = io('http://localhost:3002', {
query: {},
transports: ['websocket', 'polling'],
})
export default socket然后再組件中引入
import { defineComponent, onMounted, computed, ref } from "vue";
import socket from "@/utils/socket.js";
export default defineComponent({
name: "operation",
setup() {
onMounted(() => {
// socket.connected = true; // 默認(rèn)false, 在和java調(diào)試中,需要打開(kāi)鏈接 值變?yōu)閠rue
socket.on("connect", () => {
console.log("socketio-connect");
});
});
}
})然后我們啟動(dòng)服務(wù) 前后臺(tái)都要起,這時(shí)候我們看到 控制臺(tái)和 服務(wù)端都有打印結(jié)果,就說(shuō)明連接成功了。

服務(wù)端
配置服務(wù)端 socket server.js (我這里是用node寫(xiě)的, java同理)
如果使用 express 需要在安裝下 express
npm install express --seve
npm install socket.io --save
server.js 服務(wù)端
const express = require('express')
let fs = require('fs')
const app = express()
let port = 3002
// 讀取文件
const server = app.listen(port, () => {
console.log('成功啟動(dòng)express服務(wù),端口號(hào)是' + port)
})
//引入socket.io傳入服務(wù)器對(duì)象 讓socket.io注入到web網(wǎng)頁(yè)服務(wù)
const io = require('socket.io')(server);
io.on('connection', function(socket) {
console.log('初始化');
// 接受 客戶端 message事件
socket.on("message", function (msg) {
// 服務(wù)端推送客戶端 客戶端也要用 socket.on("message",(data)=>{}) 接收
io.emit("message", msg) //服務(wù)器通過(guò)廣播將新用戶發(fā)送給全體群聊成員
})
//監(jiān)聽(tīng)log事件
socket.on("log", function (msg) {
// 服務(wù)端推送客戶端
io.emit("log", msg) //服務(wù)器通過(guò)廣播將新用戶發(fā)送給全體群聊成員
})
});然后我們就可以實(shí)現(xiàn)socket 通訊了
完整代碼
server,js
const express = require('express')
const app = express()
let port = 3002
const server = app.listen(port, () => {
console.log('成功啟動(dòng)express服務(wù),端口號(hào)是' + port)
})
//引入socket.io傳入服務(wù)器對(duì)象 讓socket.io注入到web網(wǎng)頁(yè)服務(wù)
const io = require('socket.io')(server);
let indexSate = 0
let timer = null
io.on('connection', function(socket) {
console.log('初始化');
// 初始化
indexSate = 0
clearTimeout(timer)
timer = null
socket.on("start", function(msg) {
console.log(msg)
timer = setInterval(() => {
io.emit('message', indexSate);
indexSate++
}, 1000)
})
socket.on("stop", function(msg) {
console.log(msg)
clearTimeout(timer)
timer = null
})
});socket.js
import io from 'socket.io-client'
const socket = io('http://localhost:3002', {
query: {},
transports: ['websocket', 'polling'],
})
export default socketcheshi.vue
<template>
<div>
<el-button size="small" @click="start" type="primary">開(kāi)始</el-button>
<el-button size="small" @click="stop" type="primary">暫停</el-button>
<div></div>
</div>
</template>
<script>
import { defineComponent, onMounted, computed, ref } from "vue";
import socket from "@/utils/socket.js";
export default defineComponent({
name: "operation",
setup() {
// socket.connected = true; // 默認(rèn)false, 在和java調(diào)試中,需要打開(kāi)鏈接 值變?yōu)閠rue
onMounted(() => {
socket.on("connect", () => {
console.log("socketio-connect");
});
});
socket.on("message", (data) => {
console.log(data);
});
const start = () => {
socket.emit("start", "開(kāi)始");
};
const stop = () => {
socket.emit("stop", "暫停");
};
return {
start,
stop,
};
},
});
</script>
<style lang="less" scoped>
</style>結(jié)果打印


到此這篇關(guān)于vue3 使用socket的文章就介紹到這了,更多相關(guān)vue3 使用socket內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3編譯報(bào)錯(cuò)ESLint:defineProps is not defined&nbs
這篇文章主要介紹了vue3編譯報(bào)錯(cuò)ESLint:defineProps is not defined no-undef的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue.js每天必學(xué)之指令系統(tǒng)與自定義指令
Vue.js每天必學(xué)之指令系統(tǒng)與自定義指令,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
vue監(jiān)聽(tīng)頁(yè)面上的報(bào)錯(cuò)信息
這篇文章主要介紹了vue監(jiān)聽(tīng)頁(yè)面上的報(bào)錯(cuò)信息,window.onerror和window.addEventListener(‘error‘)的區(qū)別,需要的朋友可以參考下2023-10-10
webstorm提示?@路徑?Module?is?not?installed的問(wèn)題
這篇文章主要介紹了webstorm提示?@路徑?Module?is?not?installed的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
antd vue 刷新保留當(dāng)前頁(yè)面路由,保留選中菜單,保留menu選中操作
這篇文章主要介紹了antd vue 刷新保留當(dāng)前頁(yè)面路由,保留選中菜單,保留menu選中操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
vue 實(shí)現(xiàn) rem 布局或vw 布局的方法
這篇文章主要介紹了vue 實(shí)現(xiàn) rem 布局的 或者 vw 布局的方法,本文給提供多種方法,需要的朋友可以參考下2019-11-11
vue 中監(jiān)聽(tīng)生命周期事件的操作方式
vue2 提供了一些生命周期事件的方式,在組件銷(xiāo)毀后觸發(fā)一個(gè)事件,父組件可監(jiān)聽(tīng)到該事件,然后執(zhí)行某些操作,這篇文章主要介紹了vue 中監(jiān)聽(tīng)生命周期事件的操作方式,需要的朋友可以參考下2024-06-06

