mirror of https://github.com/msgbyte/tailchat
refactor(web): 登录成功后连接到服务器
parent
7d80563741
commit
b3b88968a6
@ -0,0 +1,32 @@
|
|||||||
|
import { io, Socket } from 'socket.io-client';
|
||||||
|
import { config } from '../config';
|
||||||
|
import _isNil from 'lodash/isNil';
|
||||||
|
|
||||||
|
let socket: Socket;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建Socket连接
|
||||||
|
* 如果已经有Socket连接则关闭上一个
|
||||||
|
* @param token Token
|
||||||
|
*/
|
||||||
|
export function createSocket(token: string) {
|
||||||
|
if (!_isNil(socket)) {
|
||||||
|
socket.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Promise<void>((resolve, reject) => {
|
||||||
|
socket = io(config.serverUrl, {
|
||||||
|
transports: ['websocket'],
|
||||||
|
auth: {
|
||||||
|
token,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
socket.once('connect', () => {
|
||||||
|
// 连接成功
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
socket.once('error', () => {
|
||||||
|
reject();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
import { createSocket, useAsync } from 'pawchat-shared';
|
||||||
|
import { getUserJWT } from '../utils/jwt-helper';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建全局Socket
|
||||||
|
*/
|
||||||
|
export function useEnsureSocket() {
|
||||||
|
const { loading, error } = useAsync(async () => {
|
||||||
|
const token = await getUserJWT();
|
||||||
|
if (typeof token === 'string') {
|
||||||
|
await createSocket(token);
|
||||||
|
console.log('当前socket连接成功'); // TODO
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return { loading, error };
|
||||||
|
}
|
Loading…
Reference in New Issue