@@ -0,0 +1 @@ | |||
npm login --registry=http://127.0.0.1:1022/repository/npm-hosted/ |
@@ -1,6 +1,6 @@ | |||
{ | |||
"name": "@szyx/szyx-push-web", | |||
"version": "0.0.22", | |||
"version": "0.0.23", | |||
"description": "数字医信-即时通讯-im-js-sdk", | |||
"main": "index.js", | |||
"scripts": { | |||
@@ -0,0 +1 @@ | |||
npm login --registry=http://nexus.51trust.net/repository/npm-hosted/ |
@@ -0,0 +1,91 @@ | |||
declare const SzyxPush: ISzyxPush; | |||
export default SzyxPush; | |||
export declare enum OsType { | |||
ios = 1, | |||
android = 2, | |||
web = 3, | |||
windows = 4, | |||
mac = 5, | |||
wx = 6, | |||
unknown = -1, | |||
} | |||
export const enum MsgType { | |||
unknown = -1, | |||
text = 1, | |||
voice = 2, | |||
image = 3, | |||
location = 4, | |||
video = 5, | |||
file = 6, | |||
at = 7, | |||
other = 8, | |||
log = 9, | |||
} | |||
export declare type MessageListener = (messageType: MsgType, message: Message) => void; | |||
/** | |||
* 当messageType为text的时候,返回这个 | |||
*/ | |||
export declare interface TextMessage { | |||
text: string | |||
} | |||
export declare interface PictureMessage { | |||
url: string | |||
thumbnail: string | |||
thumbnailWidth: number | |||
thumbnailHeight: number | |||
} | |||
export declare interface Message { | |||
/** | |||
* 租户id | |||
*/ | |||
tenantNo: string; | |||
messageType: MsgType; | |||
messageId: string; | |||
target: string; | |||
fromClientId: string; | |||
toClientId: string; | |||
timestamp: number; | |||
message: string | TextMessage | PictureMessage; | |||
} | |||
export declare interface ISzyxPush { | |||
setBaseUrl(url: string) | |||
install(app, tenantNo: string, osType: OsType, url?: string): Promise<void>; | |||
/** | |||
* 初始化方法,建议放在main.js中 | |||
* @param tenantNo 租户id,在平台获取 | |||
* @param osType 设备类型 {@link OsType} | |||
* @param url 服务端地址,可以不传 | |||
*/ | |||
init(tenantNo: string, osType: OsType, url?: string): Promise<void>; | |||
register(userId: string): Promise<void>; | |||
/** | |||
*添加消息回调,到达的消息统一分发入口 | |||
* @param callback | |||
* @return callbackId 页面关闭时记得用 {@link unMessage}注销 | |||
*/ | |||
onMessage(callback: MessageListener): number; | |||
/** | |||
*注销消息回调 | |||
* @param callId 由{@link onMessage}返回 | |||
*/ | |||
unMessage(callId): void; | |||
sendTextMsg(userId: string, text: string, describe?: string): Promise<Message>; | |||
} |
@@ -0,0 +1,30 @@ | |||
{ | |||
"name": "@szyx/szyx-push-web", | |||
"version": "0.0.1", | |||
"description": "数字医信-即时通讯-im-js-sdk", | |||
"main": "index.js", | |||
"scripts": { | |||
"test": "echo \"Error: no test specified\" && exit 1" | |||
}, | |||
"files": [ | |||
"index.js", | |||
"index.d.ts" | |||
], | |||
"keywords": [ | |||
"szyx-push-web", | |||
"szyx", | |||
"js-sdk", | |||
"shuziyixin" | |||
], | |||
"author": "deployment", | |||
"license": "ISC", | |||
"publishConfig": { | |||
"registry": "https://nexus.51trust.net/repository/npm-hosted/" | |||
}, | |||
"dependencies": { | |||
"net": "^1.0.2", | |||
"stompjs": "^2.3.3", | |||
"axios": "^1.3.4", | |||
"fingerprintjs2": "^2.1.4" | |||
} | |||
} |
@@ -8,8 +8,9 @@ | |||
"lint": "vue-cli-service lint" | |||
}, | |||
"dependencies": { | |||
"@szyx/szyx-push-web": "^0.0.21", | |||
"@typescript-eslint/parser": "^5.57.0", | |||
"axios": "^1.3.4", | |||
"babel-eslint": "^10.1.0", | |||
"core-js": "^3.8.3", | |||
"element-plus": "^2.3.1", | |||
"fingerprintjs2": "^2.1.4", | |||
@@ -25,7 +26,7 @@ | |||
"@vue/cli-plugin-eslint": "~5.0.0", | |||
"@vue/cli-service": "~5.0.0", | |||
"eslint": "^7.32.0", | |||
"eslint-plugin-vue": "^8.0.3" | |||
"eslint-plugin-vue": "^9.10.0" | |||
}, | |||
"eslintConfig": { | |||
"root": true, | |||
@@ -37,7 +38,7 @@ | |||
"eslint:recommended" | |||
], | |||
"parserOptions": { | |||
"parser": "@babel/eslint-parser" | |||
"parser": "babel-eslint" | |||
}, | |||
"rules": {} | |||
}, | |||
@@ -8,4 +8,4 @@ import "@/index"; | |||
import {OsType} from "@/src/szyx-push-sdk"; | |||
import {SzyxPush} from "@/index"; | |||
createApp(App).use(router).use(ElementPlus).use(SzyxPush, '123456', OsType.web, 'http://192.168.115.137:8888').mount('#app') | |||
createApp(App).use(router).use(ElementPlus).use(SzyxPush, '123456', OsType.web).mount('#app') |
@@ -1,18 +1,18 @@ | |||
import Fingerprint2 from 'fingerprintjs2'; | |||
import axios from 'axios'; | |||
import Stomp from "stompjs"; | |||
import Fingerprint2 from 'fingerprintjs2' | |||
import axios from 'axios' | |||
import Stomp from "stompjs" | |||
export var OsType; | |||
(function (OsType) { | |||
OsType[OsType["unknown"] = -1] = "unknown"; | |||
OsType[OsType["ios"] = 1] = "ios"; | |||
OsType[OsType["android"] = 2] = "android"; | |||
OsType[OsType["web"] = 3] = "web"; | |||
OsType[OsType["windows"] = 4] = "windows"; | |||
OsType[OsType["mac"] = 5] = "mac"; | |||
OsType[OsType["wx"] = 6] = "wx"; | |||
})(OsType || (OsType = {})); | |||
OsType[OsType["unknown"] = -1] = "unknown" | |||
OsType[OsType["ios"] = 1] = "ios" | |||
OsType[OsType["android"] = 2] = "android" | |||
OsType[OsType["web"] = 3] = "web" | |||
OsType[OsType["windows"] = 4] = "windows" | |||
OsType[OsType["mac"] = 5] = "mac" | |||
OsType[OsType["wx"] = 6] = "wx" | |||
})(OsType || (OsType = {})) | |||
export const MsgType = { | |||
@@ -23,17 +23,17 @@ class SzyxPushClient { | |||
constructor() { | |||
this.mapCall = new Map(); | |||
this._mapMsg = new Map(); | |||
this.mapCall = new Map() | |||
this._mapMsg = new Map() | |||
this._host = null; | |||
this._port = null; | |||
this._deviceType = null; | |||
this._host = null | |||
this._port = null | |||
this._deviceType = null | |||
this._user = null; | |||
this._user = null | |||
this._client = null; | |||
this.socketOpen = false; | |||
this._client = null | |||
this.socketOpen = false | |||
this.ws = { | |||
send: this.sendSocketMessage | |||
} | |||
@@ -41,9 +41,9 @@ class SzyxPushClient { | |||
guid() { | |||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { | |||
const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8); | |||
return v.toString(16); | |||
}); | |||
const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8) | |||
return v.toString(16) | |||
}) | |||
} | |||
_parseMsg(message) { | |||
@@ -129,15 +129,15 @@ class SzyxPushClient { | |||
packetType: 'SENDACK', messageId: message.messageId | |||
})) | |||
for (const call of this.mapCall.values()) { | |||
call(message.messageType, this._parseMsg(message)); | |||
call(message.messageType, this._parseMsg(message)) | |||
} | |||
} else if (message.packetType === 'SENDACK') { | |||
const m = this._mapMsg.get(message.messageId) | |||
if (m) m.call(this._parseMsg(m.message)) | |||
this._mapMsg.delete(message.messageId) | |||
} | |||
}, error => reject(`订阅消息失败::${error}`)); | |||
}, error => reject(`连接服务器失败::${error}`), '/'); | |||
}, error => reject(`订阅消息失败::${error}`)) | |||
}, error => reject(`连接服务器失败::${error}`), '/') | |||
} | |||
connect(user) { | |||
@@ -233,15 +233,17 @@ const _connect = (res, resolve, reject) => { | |||
} | |||
const SzyxPush = { | |||
_baseUrl: 'http://192.168.115.137:8888', setBaseUrl: function (url) { | |||
setBaseUrl: function (url) { | |||
if (url && url.startsWith('http')) | |||
this._baseUrl = url | |||
else { | |||
this._baseUrl = 'http://192.168.115.137:8888' | |||
} | |||
}, install: function (app, tenantNo, osType, url) { | |||
app.config.globalProperties.$SzyxPush = this; | |||
app.config.globalProperties.$SzyxPush = this | |||
return this.init(tenantNo, osType, url) | |||
}, init: function (tenantNo, osType, url) { | |||
if (url && url.startsWith('http')) | |||
this._baseUrl = url | |||
this.setBaseUrl(url) | |||
console.log(`${tenantNo}::${osType}`) | |||
_imUser._tenantNo = tenantNo | |||
_imClient.setDeviceType(osType) | |||
@@ -268,7 +270,7 @@ const SzyxPush = { | |||
}, fail: e => { | |||
reject(`注册im服务失败::${error}`) | |||
} | |||
}); | |||
}) | |||
} else { | |||
axios.create({ | |||
@@ -285,5 +287,5 @@ const SzyxPush = { | |||
}, sendTextMsg: function (userId, text, describe) { | |||
return _imClient.sendTextMsg(userId, text, describe) | |||
} | |||
}; | |||
} | |||
export default SzyxPush |