perf: break change: socketio传输效率优化

使用msgpack协议增加网络传输效率
pull/70/head
moonrailgun 4 years ago
parent 089dbbb37f
commit 424d451cd9

@ -5,6 +5,7 @@ import { isDevelopment } from '../utils/environment';
import { showErrorToasts, showGlobalLoading, showToasts } from '../manager/ui'; import { showErrorToasts, showGlobalLoading, showToasts } from '../manager/ui';
import { t } from '../i18n'; import { t } from '../i18n';
import { sharedEvent } from '../event'; import { sharedEvent } from '../event';
import msgpackParser from 'socket.io-msgpack-parser';
class SocketEventError extends Error { class SocketEventError extends Error {
name = 'SocketEventError'; name = 'SocketEventError';
@ -211,6 +212,7 @@ export function createSocket(token: string): Promise<AppSocket> {
token, token,
}, },
forceNew: true, forceNew: true,
parser: msgpackParser,
}); });
_socket.once('connect', () => { _socket.once('connect', () => {
// 连接成功 // 连接成功

@ -24,6 +24,7 @@
"react-redux": "^8.0.2", "react-redux": "^8.0.2",
"regenerator-runtime": "^0.13.9", "regenerator-runtime": "^0.13.9",
"socket.io-client": "^4.1.2", "socket.io-client": "^4.1.2",
"socket.io-msgpack-parser": "^3.0.2",
"url-regex": "^5.0.0", "url-regex": "^5.0.0",
"yup": "^0.32.9" "yup": "^0.32.9"
}, },

@ -303,6 +303,7 @@ importers:
react-redux: ^8.0.2 react-redux: ^8.0.2
regenerator-runtime: ^0.13.9 regenerator-runtime: ^0.13.9
socket.io-client: ^4.1.2 socket.io-client: ^4.1.2
socket.io-msgpack-parser: ^3.0.2
url-regex: ^5.0.0 url-regex: ^5.0.0
yup: ^0.32.9 yup: ^0.32.9
dependencies: dependencies:
@ -323,6 +324,7 @@ importers:
react-redux: 8.0.2_w5j4k42lgipnm43s3brx6h3c34 react-redux: 8.0.2_w5j4k42lgipnm43s3brx6h3c34
regenerator-runtime: 0.13.9 regenerator-runtime: 0.13.9
socket.io-client: 4.5.1 socket.io-client: 4.5.1
socket.io-msgpack-parser: 3.0.2
url-regex: 5.0.0 url-regex: 5.0.0
yup: 0.32.11 yup: 0.32.11
devDependencies: devDependencies:
@ -815,6 +817,7 @@ importers:
serve-static: ^1.15.0 serve-static: ^1.15.0
socket.io: ^4.2.0 socket.io: ^4.2.0
socket.io-client: ^4.1.3 socket.io-client: ^4.1.3
socket.io-msgpack-parser: ^3.0.2
swagger-jsdoc: ^6.2.8 swagger-jsdoc: ^6.2.8
tailchat-server-sdk: workspace:* tailchat-server-sdk: workspace:*
tailchat-service-swagger-generator: workspace:^1.0.0 tailchat-service-swagger-generator: workspace:^1.0.0
@ -857,6 +860,7 @@ importers:
send: 0.18.0 send: 0.18.0
serve-static: 1.15.0 serve-static: 1.15.0
socket.io: 4.5.1 socket.io: 4.5.1
socket.io-msgpack-parser: 3.0.2
tailchat-server-sdk: link:packages/sdk tailchat-server-sdk: link:packages/sdk
ts-node: 10.9.1_t4lrjbt3sxauai4t5o275zsepa ts-node: 10.9.1_t4lrjbt3sxauai4t5o275zsepa
typescript: 4.7.4 typescript: 4.7.4
@ -24439,7 +24443,7 @@ packages:
pretty-format: 27.5.1 pretty-format: 27.5.1
slash: 3.0.0 slash: 3.0.0
strip-json-comments: 3.1.1 strip-json-comments: 3.1.1
ts-node: 10.9.1_t4lrjbt3sxauai4t5o275zsepa ts-node: 10.9.1_nzafxra4mdyuer2ejmql6rdadq
transitivePeerDependencies: transitivePeerDependencies:
- bufferutil - bufferutil
- canvas - canvas
@ -35113,6 +35117,13 @@ packages:
- utf-8-validate - utf-8-validate
dev: false dev: false
/socket.io-msgpack-parser/3.0.2:
resolution: {integrity: sha512-1e76bJ1PCKi9H+JiYk+S29PBJvknHjQWM7Mtj0hjF2KxDA6b6rQxv3rTsnwBoz/haZOhlCDIMQvPATbqYeuMxg==}
dependencies:
component-emitter: 1.3.0
notepack.io: 2.2.0
dev: false
/socket.io-parser/4.0.5: /socket.io-parser/4.0.5:
resolution: {integrity: sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==} resolution: {integrity: sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==}
engines: {node: '>=10.0.0'} engines: {node: '>=10.0.0'}
@ -37235,6 +37246,7 @@ packages:
typescript: 4.7.4 typescript: 4.7.4
v8-compile-cache-lib: 3.0.1 v8-compile-cache-lib: 3.0.1
yn: 3.1.1 yn: 3.1.1
dev: false
/ts-node/10.9.1_typescript@4.7.4: /ts-node/10.9.1_typescript@4.7.4:
resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}

@ -18,6 +18,7 @@ import _ from 'lodash';
import { ServiceUnavailableError } from 'tailchat-server-sdk'; import { ServiceUnavailableError } from 'tailchat-server-sdk';
import { isValidStr } from '../lib/utils'; import { isValidStr } from '../lib/utils';
import bcrypt from 'bcryptjs'; import bcrypt from 'bcryptjs';
import msgpackParser from 'socket.io-msgpack-parser';
const blacklist: (string | RegExp)[] = ['gateway.*']; const blacklist: (string | RegExp)[] = ['gateway.*'];
@ -476,7 +477,7 @@ export const TcSocketIOService = (
initSocketIO() { initSocketIO() {
if (!this.server) { if (!this.server) {
throw new Errors.ServiceNotAvailableError( throw new Errors.ServiceNotAvailableError(
'需要和 [moleculer-web] 一起使用' '需要和 [ApiGatewayMixin] 一起使用'
); );
} }
this.io = new SocketServer(this.server, { this.io = new SocketServer(this.server, {
@ -486,6 +487,7 @@ export const TcSocketIOService = (
origin: '*', origin: '*',
methods: ['GET', 'POST'], methods: ['GET', 'POST'],
}, },
parser: msgpackParser,
}); });
if ( if (

@ -71,6 +71,7 @@
"send": "^0.18.0", "send": "^0.18.0",
"serve-static": "^1.15.0", "serve-static": "^1.15.0",
"socket.io": "^4.2.0", "socket.io": "^4.2.0",
"socket.io-msgpack-parser": "^3.0.2",
"tailchat-server-sdk": "workspace:*", "tailchat-server-sdk": "workspace:*",
"ts-node": "^10.0.0", "ts-node": "^10.0.0",
"typescript": "^4.3.3" "typescript": "^4.3.3"

@ -48,7 +48,7 @@ export * from './const';
export { Utils, Errors } from 'moleculer'; export { Utils, Errors } from 'moleculer';
/** /**
* * ,
* NOTICE: * NOTICE:
*/ */
process.on('unhandledRejection', (reason, promise) => { process.on('unhandledRejection', (reason, promise) => {

Loading…
Cancel
Save