個人專案記錄 VChat

2021-09-29 08:14:51 字數 2826 閱讀 7943

介面許可權,即在客戶端傳送請求的時候,需要帶上乙個伺服器給予的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...