介面許可權,即在客戶端傳送請求的時候,需要帶上乙個伺服器給予的token,伺服器根據該token判斷該客戶端是否可以獲取資源或進行某些操作。
exm:
登陸成功時生成token給到客戶端,客戶端把token存在本地,每次請求時帶上。
router.
post
('/signin'
,(req,res)
=>
, secret,);
res.
json()
}else)}
}else)}
});}
);
客戶端傳送請求,服務端驗證token
router.
get(
'/friends'
,(req,res)
=>)}
else})
;});
// 前端使用axios請求
this
.$axios.
get(
'/api/user/friends',}
).then
(res=>
})
流程:
1.使用者登陸成功後,與伺服器發起socket連線。
2.伺服器使用乙個users物件來儲存使用者與socket之間的對映,每當socket斷開,都要更新users。每次使用者斷開連線時,都要將users[uid] 置為 null。每次連線時再分配新的socketid。
let users =
// 存放離線資訊
let unline_data =
[// uid2 為接收方
uid2 :[,
.......]
];
每次客戶端上線時檢查有沒有離線資訊給該客戶端的,有的話傳送,並清空該客戶端離線資訊。
// 連線成功
let hismsg = unline_data[conn_uid]
? unline_data[conn_uid]
:'沒有新訊息'
;let initmsg =
連線成功 給你分配的socketid為$`
, hismsg: hismsg};
socket.
emit
('receivemsg',)
;unline_data[conn_uid]
=null
;// 清空離線資訊
let users =
;// 存放離線資訊
let unline_data =[/*
// uid2 為接收方
uid2 : [
,.......
]*/];
io.on
('connection'
,function
(socket)
連線成功 給你分配的socketid為$`
, hismsg: hismsg
};socket.
emit
('receivemsg',)
; unline_data[conn_uid]
=null
;// 清空離線資訊
// 這裡監聽 disconnect,就可以知道誰斷開連線了
socket.on(
'disconnect'
,function()
}); console.
log(
'socket disconnect: '
+ socket.id);}
);//接收資料 並**給相應的使用者 實現單點聊天
socket.on(
'sendmsg'
,function
(obj);if
(users[uid2]
)else
unline_data[uid2]
.push
(data)}}
);})
;
router.
beforeeach
((to,
from
,next)
=>})
);//與伺服器進行連線
//監聽接收資訊
store.getters.getsocket.on(
"receivemsg"
,function
(data));
}next()
// 繼續跳轉路由})
;
vuex:
import vue from
'vue'
import vuex from
'vuex'
import io from
'socket.io-client'
vue.
use(vuex)
const store =
newvuex.store(,
getters:
, getsocket:
function
(state)},
mutations:
, setsocketfunc:
function
(state,socket)},
actions:
, setsocket:
function
(context,socket)}}
);export
default store
PSP記錄個人專案耗時
psp2.1 personal software process stage time planning 計畫90 estimate 估計這個任務需要多長時間 90development 開發80 analysis 需求分析 15 design spec 生成設計文件 5 design review...
ReactiveCocoa個人記錄
self.mybutton rac signalforcontrolevents uicontroleventtouchupinside subscribenext id x 複製 self.mytextfield rac textsignal subscribenext id x distinct...
sql個人記錄
背景1 時間段內存在重複的號碼,號碼去重後,統計時間段內號碼數量select count from select count as num from table1 where markdate to date 2020 05 18 yyyy mm dd and markdate to date 20...