您好,登錄后才能下訂單哦!
這篇文章給大家介紹vue和node以及socket io如何實現(xiàn)多人互動并發(fā)布上線,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
1. 前端使用vue + vuex + socket.io-client
npm install socket.io-client --save-dev
2. 后端使用node + express + socketio
1.搭建node開發(fā)環(huán)境
npm init -y
安裝所需依賴
npm install express --save-dev
npm install socket.io-client --save-dev
1. 發(fā)送事件
socket.emit('事件名', data => { // data為要傳輸的數據,可以為boolean, string, number, object等 })
2. 監(jiān)聽事件
socket.on('發(fā)送時的事件名', data => { // data發(fā)送事件傳過來的數據 })
3. 廣播事件
// 發(fā)送給其他用戶 (不對本身發(fā)送) socket.broadcast.emit('事件名', data => { // data為要傳輸的數據,可以為boolean, string, number, object等 })
1. 前端新建一個socket.js文件, 用于接收socket相關事件,具體如下
// 引入socket.io-client import io from 'socket.io-client' // 創(chuàng)建鏈接 const socket = io() // 監(jiān)聽 socket.on('connect', () => { console.log('和服務器連接成功??!') }) > =============中間部分用于監(jiān)聽后端發(fā)送的socket事件,例如:===================== // 進入房間 socket.on('enter_room', (data) => { // 必要數據可存storage localStorage.setItem('counts', JSON.stringify(data)) store.commit('setData', JSON.parse(localStorage.getItem('data'))) }) // 處理服務失去連接 socket.on('disconnect', () => { console.log('disconnect') })
2. 后端部分相關代碼
const app = require('express')() const http = require('http').Server(app) var io = require('socket.io')(http) let onlineUsers = {} let users = [] let onlineCounts = 0 io.on('connection', socket => { // 用戶進入游戲 socket.on('enter', (data) => // 添加用戶信息 const sid = socket.id socket.name = data.name // 添加新用戶 if(!onlineUsers.hasOwnProperty(data.name)) { onlineUsers[data.name] = sid onlineCounts++ } if (!users.length) { users.push({ name: onlineUsers[sid] }) } // 當前人數 let clientsCount = io.sockets.server.engine.clientsCount // 發(fā)送用戶列表給當前用戶(對應前端監(jiān)聽enter_room部分代碼) io.emit('enter_room', { role: data.role, users, onlineCounts }) // 發(fā)送新進用戶給其他用戶 (不對本身發(fā)送) socket.broadcast.emit('user_enter', data.name) }) }) // 后端開啟監(jiān)聽端口, 前端通過配置proxyTable處代理到后端服務器,即可進行前后端數據對接 http.listen(port, () => { console.log('后端服務器啟動成功?。?!') })
1.前端:
1)安裝http-server,然后鏈接服務器,進入服務器后拉取遠程倉庫的前端代碼(一般在服務器www目錄下拉?。?,如果沒有克隆過代碼,需要在服務器配置公鑰,才能進行下載
公鑰配置
ssh-keygen -t rsa -C "你的郵箱"
生成公鑰后,進入公鑰生成的文件目錄,復制到代碼托管平臺,添加公鑰后就可以克隆代碼咯
2)打包前端代碼,生成dist文件
npm run build
3)進入dist,執(zhí)行命令,即可啟動前端
pm2 start http-server -- -p 指定端口號
4)前端訪問,服務器地址+端口號
2.后端:
1)和前端一樣(不用安裝http-server),進入服務器后拉取遠程倉庫的前端代碼(一般在服務器www目錄下拉?。?,如果沒有克隆過代碼,需要在服務器配置公鑰,才能進行下載
2)執(zhí)行命令
pm2 start index.js(文件入口,如果你的是app.js為文件入口,就執(zhí)行app.js) -- -p 指定端口號
注意點:
socket.io在發(fā)布線上的時候前端得修改socket.io代理地址端口為后端端口,否則會報404,修改位置如下(這里我的后端端口為3000)
2. nginx需要修改socket.io的代理轉發(fā)地址,否則也會報404
補充 1.pm2 常用指令
pm2 list // 查看pm2啟動列表
pm2 stop 指定端口號 // 停止當前端口下的pm2
pm2 restart 指定端口號 // 重啟指定端口的pm2
pm2 delete 指定端口號 // 刪除當前窗口下的pm2
pm2 start http-server / index.js -- -p 指定端口號 // 啟動對應的前后端
2. nginx在命令行中的相關指令
cd /nginx指定目錄
cat nginx.conf // 查看nginx文件內容
vim nginx.conf // 編輯nginix,注意進入后使用 "i"進行編輯模式;"u"撤銷上一步編輯;"esc"退出編輯模式;"shift + :"保存并退出
關于vue和node以及socket io如何實現(xiàn)多人互動并發(fā)布上線就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。