vue3 使用socket的完整代碼
Vue3 客戶端
首先我們下載依賴 socket.io-client
npm install socket.io-client --save
socket.js
import io from 'socket.io-client'
// 鏈接 服務端
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; // 默認false, 在和java調(diào)試中,需要打開鏈接 值變?yōu)閠rue
socket.on("connect", () => {
console.log("socketio-connect");
});
});
}
})然后我們啟動服務 前后臺都要起,這時候我們看到 控制臺和 服務端都有打印結果,就說明連接成功了。

服務端
配置服務端 socket server.js (我這里是用node寫的, java同理)
如果使用 express 需要在安裝下 express
npm install express --seve
npm install socket.io --save
server.js 服務端
const express = require('express')
let fs = require('fs')
const app = express()
let port = 3002
// 讀取文件
const server = app.listen(port, () => {
console.log('成功啟動express服務,端口號是' + port)
})
//引入socket.io傳入服務器對象 讓socket.io注入到web網(wǎng)頁服務
const io = require('socket.io')(server);
io.on('connection', function(socket) {
console.log('初始化');
// 接受 客戶端 message事件
socket.on("message", function (msg) {
// 服務端推送客戶端 客戶端也要用 socket.on("message",(data)=>{}) 接收
io.emit("message", msg) //服務器通過廣播將新用戶發(fā)送給全體群聊成員
})
//監(jiān)聽log事件
socket.on("log", function (msg) {
// 服務端推送客戶端
io.emit("log", msg) //服務器通過廣播將新用戶發(fā)送給全體群聊成員
})
});然后我們就可以實現(xiàn)socket 通訊了
完整代碼
server,js
const express = require('express')
const app = express()
let port = 3002
const server = app.listen(port, () => {
console.log('成功啟動express服務,端口號是' + port)
})
//引入socket.io傳入服務器對象 讓socket.io注入到web網(wǎng)頁服務
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">開始</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; // 默認false, 在和java調(diào)試中,需要打開鏈接 值變?yōu)閠rue
onMounted(() => {
socket.on("connect", () => {
console.log("socketio-connect");
});
});
socket.on("message", (data) => {
console.log(data);
});
const start = () => {
socket.emit("start", "開始");
};
const stop = () => {
socket.emit("stop", "暫停");
};
return {
start,
stop,
};
},
});
</script>
<style lang="less" scoped>
</style>結果打印


到此這篇關于vue3 使用socket的文章就介紹到這了,更多相關vue3 使用socket內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue3編譯報錯ESLint:defineProps is not defined&nbs
這篇文章主要介紹了vue3編譯報錯ESLint:defineProps is not defined no-undef的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
webstorm提示?@路徑?Module?is?not?installed的問題
這篇文章主要介紹了webstorm提示?@路徑?Module?is?not?installed的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11
antd vue 刷新保留當前頁面路由,保留選中菜單,保留menu選中操作
這篇文章主要介紹了antd vue 刷新保留當前頁面路由,保留選中菜單,保留menu選中操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08

