
Research
/Security News
Weaponizing Discord for Command and Control Across npm, PyPI, and RubyGems.org
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.
@smt-lib/bullet-service
Advanced tools
解释: 降低直播收发弹幕的开发成本,让业务方更关注于弹幕界面交互效果。
npm使用方法方法,见npm使用说明
npm install @smt-lib/bullet-service
const Studio = require('@smt-lib/bullet-service');
const studio = new Studio({
roomId: '' // 直播间id
});
// 监听消息
studio.onMessage(function (res) {
// res 是消息体
});
// 加入直播间并开始监听消息
studio.join();
.then(res => {
})
.catch(err=> {
});
// 发送消息
studio.sendMessage(text)
.then(res => {
if (res.data && res.data.type === '102') {
studio.quit();
}
})
.catch(err=> {
});
// 退出直播间
studio.quit();
// 扩展api
// 捕获异常
studio.onError(function (err) {
// err 异常信息
});
// 停止接收消息
studio.stop();
// 更新用户openid
studio.updateUser('填写openid');
构造器
属性名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
roomId | string | Y | 直播间id | |
openId | string | N | 登录用户必须传openId |
方法
join
加入直播间, 并开始接收消息。
属性名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
roomId | string | N | 构造函数中填写的roomId | 直播间id |
返回:Promise对象
成功
字段名 | 类型 | 必有 | 说明 |
---|---|---|---|
host | object | Y | 主播信息 |
userinfo | object | Y | 用户信息 |
feedbacks | string | Y | 点赞数 |
onlineUsers | string | Y | 在线用户数 |
status | string | Y | 直播间状态,0 直播 2 关闭无回放 3 关闭且有回放 20 直播间结束 |
warning | string | Y | 进入直播间在直播界面显示的警示语,固定为:【官方提醒:欢迎进入直播间。官方提倡健康的直播环境,对弹幕内容进行实时巡查。任何传播违法、违规、低俗等不良信息行为的帐号将会进行严肃处理哦!】。 |
character | string | Y | 用户所属直播间的角色 |
characterName | string | Y | 用户所属直播间的角色名称,如果character为1005普通用户,那么该字段为空,否则不为空; |
hasComment | string | Y | 聊天室是否显示评论区 |
{
"onlineUsers":"0",
"status":"0",
"warning":"官方提醒:欢迎进入直播间。官方提倡健康的直播环境,对弹幕内容进行实时巡查。任何传播违法、违规、低俗等不良信息行为的帐号将会进行严肃处理哦!",
"hasComment":"1",
"feedbacks":"0",
"userinfo":{
"avatar_url":"https://himg.bdimg.com/sys/portrait/item/3ae42f11.jpg?time=3086",
"gender":"2",
"nick_name":"revee789"
},
"host":{
"fans":"65",
"follows":"33",
"gender":"0",
"avatar_url":"https://himg.bdimg.com/sys/portrait/item/tb.1.63ca1926.cEGFpFgU2U04m76uFmWIaw.jpg",
"name":"yanxfchenx",
"nick_name":"yanxfchenx"
}
}
失败
字段名 | 类型 | 必有 | 说明 |
---|---|---|---|
stage | string | Y | 阶段名称: join加入直播间,quit退出直播间,sendMessage发送信息 |
errno | number | N | 错误码 |
errMsg | string | N | 错误信息 |
tipmsg | string | N | 中文错误信息 |
error | string/object | Y | 错误信息 |
sendMessage
字段名 | 类型 | 必有 | 说明 |
---|---|---|---|
text | string | Y | 弹幕文本 |
返回:Promise对象
成功
字段名 | 类型 | 必有 | 说明 |
---|---|---|---|
content | string | Y | 消息内容 |
msgKey | string | Y | 客户端生成id |
msgid | number | Y | 消息id |
失败
字段名 | 类型 | 必有 | 说明 |
---|---|---|---|
stage | string | Y | 阶段名称: join加入直播间,quit退出直播间,sendMessage发送信息 |
errno | number | N | 错误码 |
errMsg | string | N | 错误信息 |
tipmsg | string | N | 中文错误信息 |
error | string/object | Y | 错误信息 |
onMessage
注册消息监听函数
字段名 | 类型 | 必有 | 说明 |
---|---|---|---|
callback | function | Y | 消息回调函数 |
callback参数说明
字段名 | 类型 | 必有 | 说明 |
---|---|---|---|
type | string | Y | 消息类型,可枚举:0文本消息,101系统消息,102退出直播间消息,106删除消息 |
msgid | number | Y | 消息id 唯一 |
// 普通消息
{
"msgKey":"_smt1578212826585",
"msgid":1578212827136553,
"createTime":1578212827,
"roomId":"5619165",
"type":"0",
"vip":"0",
"name":"百度网友cb12e4d",
"portrait":"http://himg.bdimg.com/sys/portrait/item/3ae42f11.jpg?time=3086",
"content":"好纠结的测试文案"
}
// 系统消息
{
"type":101,
"data":{
"lastestuser":[
"张三",
"李四"
],
"onlineusercnt":32,
"totaluser":32,
"onlineuser":[
{
"uid":65,
"avatar":"HTTPS"
}
]
}
// 直播结束
{
"type":102,
"data":{
"duration":718534,
"total_users":0,
"new_fans":0,
"feedbacks":0,
"close_from":0,
"duration_format":"199:35:34",
"total_users_format":"0",
"feedbacks_format":"0",
"msg_num_format":"0"
},
"room_id":"5621662"
}
// 系统公告 二期IM支持
{
"type" :103 // 消息类型
"data":{
"title" : string, //系统消息内容,如 “系统公告”
"content" : string, //系统消息内容
}
}
// 删除消息
{
"type":106,
"data":{
"mcast_id":3307661947,
"msgids":[
"1579175545854083"
]
}
}
tips; 1 type:0 普通消息用于展示。 2 type:101 是系统消息,获取在线人数等信息。 3 type:102 是系统公告,由IM直播服务控制下发。 4 type:106 是删除消息,由IM直播服务控制下发。
quit
退出直播间
退出之前会清除消息监听和内存资源。
字段名 | 类型 | 必有 | 说明 |
---|---|---|---|
roomId | number | N | 房间id |
返回:Promise对象
失败
字段名 | 类型 | 必有 | 说明 |
---|---|---|---|
stage | string | Y | 阶段名称: join加入直播间,quit退出直播间,sendMessage发送信息 |
errno | number | N | 错误码 |
errMsg | string | N | 错误信息 |
tipmsg | string | N | 中文错误信息 |
error | string/object | Y | 错误信息 |
updateUser
在用户切换账号成功后调用,studio实例将自动更新用户数据。
字段名 | 类型 | 必有 | 说明 |
---|---|---|---|
openId | string | Y |
stop
停止接收消息并释放网络资源。
onError
注册异常监听函数
字段名 | 类型 | 必有 | 说明 |
---|---|---|---|
callback | function | Y | 异常回调函数 |
callback参数说明
字段名 | 类型 | 必有 | 说明 |
---|---|---|---|
stage | string | Y | 阶段说明 |
error | string | object | Y |
errno 错误码与 errmsg对照表
业务方向 业务码 具体业务 具体错误码后缀 错误码信息 错误码解释 直播100
错误码 | 错误信息 | 错误解释 | 备注 |
---|---|---|---|
00001 | unkown error | 下游接口返回错误 | 前缀00 加入直播间 |
00002 | param error | 参数错误 | |
00003 | room not exist | 直播房间号不存在 | |
01001 | room has been shutdown | 直播间被关闭 | 前缀01 发弹幕 |
01002 | no authority | 参数错误 | |
01003 | send msg to restapi-golang cast fail | 向后端发送消息失败 | |
01004 | the user in block list | 用户在黑名单 | |
02001 | param error ext | 参数错误 | 前缀02 退出直播间 |
02002 | token not valid | token无效 | |
02003 | root not ready | 直播未开始 | |
02004 | liveroom size upper limit | 人数已达直播间上限 |
tips:在发生错误时,此表可以做为初步参照依据,进行异常的定位和处理。
FAQs
We found that @smt-lib/bullet-service demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.
Security News
Socket now integrates with Bun 1.3’s Security Scanner API to block risky packages at install time and enforce your organization’s policies in local dev and CI.
Research
The Socket Threat Research Team is tracking weekly intrusions into the npm registry that follow a repeatable adversarial playbook used by North Korean state-sponsored actors.