douyin-danma-listener 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/lib/index.js +24 -2
- package/lib/proto.js +537 -0
- package/package.json +1 -1
- package/types/index.d.ts +4 -0
- package/types/types.d.ts +16 -1
package/README.md
CHANGED
package/lib/index.js
CHANGED
|
@@ -33,6 +33,7 @@ class DouYinDanmaClient extends TypedEmitter {
|
|
|
33
33
|
timeoutTimer;
|
|
34
34
|
isTimeoutCheckRunning = false;
|
|
35
35
|
isReconnecting = false;
|
|
36
|
+
host;
|
|
36
37
|
constructor(roomId, options = {}) {
|
|
37
38
|
super();
|
|
38
39
|
this.roomId = roomId;
|
|
@@ -44,6 +45,7 @@ class DouYinDanmaClient extends TypedEmitter {
|
|
|
44
45
|
this.cookie = options.cookie;
|
|
45
46
|
this.timeoutInterval = options.timeoutInterval ?? 100000; // 默认100秒
|
|
46
47
|
this.lastMessageTime = Date.now();
|
|
48
|
+
this.host = options.host ?? "webcast100-ws-web-hl.douyin.com";
|
|
47
49
|
if (this.autoStart) {
|
|
48
50
|
this.connect();
|
|
49
51
|
}
|
|
@@ -216,6 +218,14 @@ class DouYinDanmaClient extends TypedEmitter {
|
|
|
216
218
|
this.emit("roomRank", message);
|
|
217
219
|
this.emit("message", message);
|
|
218
220
|
}
|
|
221
|
+
async handlePrivilegeScreenChatMessage(message) {
|
|
222
|
+
this.emit("privilegeScreenChat", message);
|
|
223
|
+
this.emit("message", message);
|
|
224
|
+
}
|
|
225
|
+
async handleScreenChatMessage(message) {
|
|
226
|
+
this.emit("screenChat", message);
|
|
227
|
+
this.emit("message", message);
|
|
228
|
+
}
|
|
219
229
|
/**
|
|
220
230
|
* 处理其他消息
|
|
221
231
|
*/
|
|
@@ -243,6 +253,10 @@ class DouYinDanmaClient extends TypedEmitter {
|
|
|
243
253
|
const RoomStatsMessage = protobuf.douyin.RoomStatsMessage;
|
|
244
254
|
// @ts-ignore
|
|
245
255
|
const RoomRankMessage = protobuf.douyin.RoomRankMessage;
|
|
256
|
+
// @ts-ignore
|
|
257
|
+
const PrivilegeScreenChatMessage = protobuf.douyin.PrivilegeScreenChatMessage;
|
|
258
|
+
// @ts-ignore
|
|
259
|
+
const ScreenChatMessage = protobuf.douyin.ScreenChatMessage;
|
|
246
260
|
const wssPackage = PushFrame.decode(data);
|
|
247
261
|
// @ts-ignore
|
|
248
262
|
const logId = wssPackage.logId;
|
|
@@ -309,6 +323,14 @@ class DouYinDanmaClient extends TypedEmitter {
|
|
|
309
323
|
const message = RoomRankMessage.decode(msg.payload);
|
|
310
324
|
this.handleRoomRankMessage(message.toJSON());
|
|
311
325
|
}
|
|
326
|
+
else if (msg.method === "WebcastPrivilegeScreenChatMessage") {
|
|
327
|
+
const message = PrivilegeScreenChatMessage.decode(msg.payload);
|
|
328
|
+
this.handlePrivilegeScreenChatMessage(message.toJSON());
|
|
329
|
+
}
|
|
330
|
+
else if (msg.method === "WebcastScreenChatMessage") {
|
|
331
|
+
const message = ScreenChatMessage.decode(msg.payload);
|
|
332
|
+
this.handleScreenChatMessage(message.toJSON());
|
|
333
|
+
}
|
|
312
334
|
else {
|
|
313
335
|
// WebcastRanklistHourEntranceMessage,WebcastInRoomBannerMessage,WebcastRoomStreamAdaptationMessage
|
|
314
336
|
}
|
|
@@ -326,7 +348,7 @@ class DouYinDanmaClient extends TypedEmitter {
|
|
|
326
348
|
const userUniqueId = getUserUniqueId();
|
|
327
349
|
// const userUniqueId = "7877922945687137703";
|
|
328
350
|
const versionCode = 180800;
|
|
329
|
-
const webcastSdkVersion = "1.0.
|
|
351
|
+
const webcastSdkVersion = "1.0.15";
|
|
330
352
|
const sigParams = {
|
|
331
353
|
live_id: "1",
|
|
332
354
|
aid: "6383",
|
|
@@ -361,7 +383,7 @@ class DouYinDanmaClient extends TypedEmitter {
|
|
|
361
383
|
identity: "audience",
|
|
362
384
|
signature: signature.toString(),
|
|
363
385
|
};
|
|
364
|
-
const wssUrl = `wss
|
|
386
|
+
const wssUrl = `wss://${this.host}/webcast/im/push/v2/?${new URLSearchParams(webcast5Params).toString()}`;
|
|
365
387
|
return buildRequestUrl(wssUrl);
|
|
366
388
|
}
|
|
367
389
|
}
|
package/lib/proto.js
CHANGED
|
@@ -1332,6 +1332,543 @@ export const douyin = ($root.douyin = (() => {
|
|
|
1332
1332
|
};
|
|
1333
1333
|
return ChatMessage;
|
|
1334
1334
|
})();
|
|
1335
|
+
douyin.PrivilegeScreenChatMessage = (function () {
|
|
1336
|
+
/**
|
|
1337
|
+
* Properties of a PrivilegeScreenChatMessage.
|
|
1338
|
+
* @memberof douyin
|
|
1339
|
+
* @interface IPrivilegeScreenChatMessage
|
|
1340
|
+
* @property {douyin.ICommon|null} [common] PrivilegeScreenChatMessage common
|
|
1341
|
+
* @property {douyin.IUser|null} [user] PrivilegeScreenChatMessage user
|
|
1342
|
+
* @property {string|null} [content] PrivilegeScreenChatMessage content
|
|
1343
|
+
*/
|
|
1344
|
+
/**
|
|
1345
|
+
* Constructs a new PrivilegeScreenChatMessage.
|
|
1346
|
+
* @memberof douyin
|
|
1347
|
+
* @classdesc Represents a PrivilegeScreenChatMessage.
|
|
1348
|
+
* @implements IPrivilegeScreenChatMessage
|
|
1349
|
+
* @constructor
|
|
1350
|
+
* @param {douyin.IPrivilegeScreenChatMessage=} [properties] Properties to set
|
|
1351
|
+
*/
|
|
1352
|
+
function PrivilegeScreenChatMessage(properties) {
|
|
1353
|
+
if (properties)
|
|
1354
|
+
for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
|
|
1355
|
+
if (properties[keys[i]] != null)
|
|
1356
|
+
this[keys[i]] = properties[keys[i]];
|
|
1357
|
+
}
|
|
1358
|
+
/**
|
|
1359
|
+
* PrivilegeScreenChatMessage common.
|
|
1360
|
+
* @member {douyin.ICommon|null|undefined} common
|
|
1361
|
+
* @memberof douyin.PrivilegeScreenChatMessage
|
|
1362
|
+
* @instance
|
|
1363
|
+
*/
|
|
1364
|
+
PrivilegeScreenChatMessage.prototype.common = null;
|
|
1365
|
+
/**
|
|
1366
|
+
* PrivilegeScreenChatMessage user.
|
|
1367
|
+
* @member {douyin.IUser|null|undefined} user
|
|
1368
|
+
* @memberof douyin.PrivilegeScreenChatMessage
|
|
1369
|
+
* @instance
|
|
1370
|
+
*/
|
|
1371
|
+
PrivilegeScreenChatMessage.prototype.user = null;
|
|
1372
|
+
/**
|
|
1373
|
+
* PrivilegeScreenChatMessage content.
|
|
1374
|
+
* @member {string} content
|
|
1375
|
+
* @memberof douyin.PrivilegeScreenChatMessage
|
|
1376
|
+
* @instance
|
|
1377
|
+
*/
|
|
1378
|
+
PrivilegeScreenChatMessage.prototype.content = "";
|
|
1379
|
+
/**
|
|
1380
|
+
* Creates a new PrivilegeScreenChatMessage instance using the specified properties.
|
|
1381
|
+
* @function create
|
|
1382
|
+
* @memberof douyin.PrivilegeScreenChatMessage
|
|
1383
|
+
* @static
|
|
1384
|
+
* @param {douyin.IPrivilegeScreenChatMessage=} [properties] Properties to set
|
|
1385
|
+
* @returns {douyin.PrivilegeScreenChatMessage} PrivilegeScreenChatMessage instance
|
|
1386
|
+
*/
|
|
1387
|
+
PrivilegeScreenChatMessage.create = function create(properties) {
|
|
1388
|
+
return new PrivilegeScreenChatMessage(properties);
|
|
1389
|
+
};
|
|
1390
|
+
/**
|
|
1391
|
+
* Encodes the specified PrivilegeScreenChatMessage message. Does not implicitly {@link douyin.PrivilegeScreenChatMessage.verify|verify} messages.
|
|
1392
|
+
* @function encode
|
|
1393
|
+
* @memberof douyin.PrivilegeScreenChatMessage
|
|
1394
|
+
* @static
|
|
1395
|
+
* @param {douyin.IPrivilegeScreenChatMessage} message PrivilegeScreenChatMessage message or plain object to encode
|
|
1396
|
+
* @param {$protobuf.Writer} [writer] Writer to encode to
|
|
1397
|
+
* @returns {$protobuf.Writer} Writer
|
|
1398
|
+
*/
|
|
1399
|
+
PrivilegeScreenChatMessage.encode = function encode(message, writer) {
|
|
1400
|
+
if (!writer)
|
|
1401
|
+
writer = $Writer.create();
|
|
1402
|
+
if (message.common != null && Object.hasOwnProperty.call(message, "common"))
|
|
1403
|
+
$root.douyin.Common.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();
|
|
1404
|
+
if (message.user != null && Object.hasOwnProperty.call(message, "user"))
|
|
1405
|
+
$root.douyin.User.encode(message.user, writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();
|
|
1406
|
+
if (message.content != null && Object.hasOwnProperty.call(message, "content"))
|
|
1407
|
+
writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.content);
|
|
1408
|
+
return writer;
|
|
1409
|
+
};
|
|
1410
|
+
/**
|
|
1411
|
+
* Encodes the specified PrivilegeScreenChatMessage message, length delimited. Does not implicitly {@link douyin.PrivilegeScreenChatMessage.verify|verify} messages.
|
|
1412
|
+
* @function encodeDelimited
|
|
1413
|
+
* @memberof douyin.PrivilegeScreenChatMessage
|
|
1414
|
+
* @static
|
|
1415
|
+
* @param {douyin.IPrivilegeScreenChatMessage} message PrivilegeScreenChatMessage message or plain object to encode
|
|
1416
|
+
* @param {$protobuf.Writer} [writer] Writer to encode to
|
|
1417
|
+
* @returns {$protobuf.Writer} Writer
|
|
1418
|
+
*/
|
|
1419
|
+
PrivilegeScreenChatMessage.encodeDelimited = function encodeDelimited(message, writer) {
|
|
1420
|
+
return this.encode(message, writer).ldelim();
|
|
1421
|
+
};
|
|
1422
|
+
/**
|
|
1423
|
+
* Decodes a PrivilegeScreenChatMessage message from the specified reader or buffer.
|
|
1424
|
+
* @function decode
|
|
1425
|
+
* @memberof douyin.PrivilegeScreenChatMessage
|
|
1426
|
+
* @static
|
|
1427
|
+
* @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
|
|
1428
|
+
* @param {number} [length] Message length if known beforehand
|
|
1429
|
+
* @returns {douyin.PrivilegeScreenChatMessage} PrivilegeScreenChatMessage
|
|
1430
|
+
* @throws {Error} If the payload is not a reader or valid buffer
|
|
1431
|
+
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
|
1432
|
+
*/
|
|
1433
|
+
PrivilegeScreenChatMessage.decode = function decode(reader, length) {
|
|
1434
|
+
if (!(reader instanceof $Reader))
|
|
1435
|
+
reader = $Reader.create(reader);
|
|
1436
|
+
let end = length === undefined ? reader.len : reader.pos + length, message = new $root.douyin.PrivilegeScreenChatMessage();
|
|
1437
|
+
while (reader.pos < end) {
|
|
1438
|
+
let tag = reader.uint32();
|
|
1439
|
+
switch (tag >>> 3) {
|
|
1440
|
+
case 1: {
|
|
1441
|
+
message.common = $root.douyin.Common.decode(reader, reader.uint32());
|
|
1442
|
+
break;
|
|
1443
|
+
}
|
|
1444
|
+
case 2: {
|
|
1445
|
+
message.user = $root.douyin.User.decode(reader, reader.uint32());
|
|
1446
|
+
break;
|
|
1447
|
+
}
|
|
1448
|
+
case 3: {
|
|
1449
|
+
message.content = reader.string();
|
|
1450
|
+
break;
|
|
1451
|
+
}
|
|
1452
|
+
default:
|
|
1453
|
+
reader.skipType(tag & 7);
|
|
1454
|
+
break;
|
|
1455
|
+
}
|
|
1456
|
+
}
|
|
1457
|
+
return message;
|
|
1458
|
+
};
|
|
1459
|
+
/**
|
|
1460
|
+
* Decodes a PrivilegeScreenChatMessage message from the specified reader or buffer, length delimited.
|
|
1461
|
+
* @function decodeDelimited
|
|
1462
|
+
* @memberof douyin.PrivilegeScreenChatMessage
|
|
1463
|
+
* @static
|
|
1464
|
+
* @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
|
|
1465
|
+
* @returns {douyin.PrivilegeScreenChatMessage} PrivilegeScreenChatMessage
|
|
1466
|
+
* @throws {Error} If the payload is not a reader or valid buffer
|
|
1467
|
+
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
|
1468
|
+
*/
|
|
1469
|
+
PrivilegeScreenChatMessage.decodeDelimited = function decodeDelimited(reader) {
|
|
1470
|
+
if (!(reader instanceof $Reader))
|
|
1471
|
+
reader = new $Reader(reader);
|
|
1472
|
+
return this.decode(reader, reader.uint32());
|
|
1473
|
+
};
|
|
1474
|
+
/**
|
|
1475
|
+
* Verifies a PrivilegeScreenChatMessage message.
|
|
1476
|
+
* @function verify
|
|
1477
|
+
* @memberof douyin.PrivilegeScreenChatMessage
|
|
1478
|
+
* @static
|
|
1479
|
+
* @param {Object.<string,*>} message Plain object to verify
|
|
1480
|
+
* @returns {string|null} `null` if valid, otherwise the reason why it is not
|
|
1481
|
+
*/
|
|
1482
|
+
PrivilegeScreenChatMessage.verify = function verify(message) {
|
|
1483
|
+
if (typeof message !== "object" || message === null)
|
|
1484
|
+
return "object expected";
|
|
1485
|
+
if (message.common != null && message.hasOwnProperty("common")) {
|
|
1486
|
+
let error = $root.douyin.Common.verify(message.common);
|
|
1487
|
+
if (error)
|
|
1488
|
+
return "common." + error;
|
|
1489
|
+
}
|
|
1490
|
+
if (message.user != null && message.hasOwnProperty("user")) {
|
|
1491
|
+
let error = $root.douyin.User.verify(message.user);
|
|
1492
|
+
if (error)
|
|
1493
|
+
return "user." + error;
|
|
1494
|
+
}
|
|
1495
|
+
if (message.content != null && message.hasOwnProperty("content"))
|
|
1496
|
+
if (!$util.isString(message.content))
|
|
1497
|
+
return "content: string expected";
|
|
1498
|
+
return null;
|
|
1499
|
+
};
|
|
1500
|
+
/**
|
|
1501
|
+
* Creates a PrivilegeScreenChatMessage message from a plain object. Also converts values to their respective internal types.
|
|
1502
|
+
* @function fromObject
|
|
1503
|
+
* @memberof douyin.PrivilegeScreenChatMessage
|
|
1504
|
+
* @static
|
|
1505
|
+
* @param {Object.<string,*>} object Plain object
|
|
1506
|
+
* @returns {douyin.PrivilegeScreenChatMessage} PrivilegeScreenChatMessage
|
|
1507
|
+
*/
|
|
1508
|
+
PrivilegeScreenChatMessage.fromObject = function fromObject(object) {
|
|
1509
|
+
if (object instanceof $root.douyin.PrivilegeScreenChatMessage)
|
|
1510
|
+
return object;
|
|
1511
|
+
let message = new $root.douyin.PrivilegeScreenChatMessage();
|
|
1512
|
+
if (object.common != null) {
|
|
1513
|
+
if (typeof object.common !== "object")
|
|
1514
|
+
throw TypeError(".douyin.PrivilegeScreenChatMessage.common: object expected");
|
|
1515
|
+
message.common = $root.douyin.Common.fromObject(object.common);
|
|
1516
|
+
}
|
|
1517
|
+
if (object.user != null) {
|
|
1518
|
+
if (typeof object.user !== "object")
|
|
1519
|
+
throw TypeError(".douyin.PrivilegeScreenChatMessage.user: object expected");
|
|
1520
|
+
message.user = $root.douyin.User.fromObject(object.user);
|
|
1521
|
+
}
|
|
1522
|
+
if (object.content != null)
|
|
1523
|
+
message.content = String(object.content);
|
|
1524
|
+
return message;
|
|
1525
|
+
};
|
|
1526
|
+
/**
|
|
1527
|
+
* Creates a plain object from a PrivilegeScreenChatMessage message. Also converts values to other types if specified.
|
|
1528
|
+
* @function toObject
|
|
1529
|
+
* @memberof douyin.PrivilegeScreenChatMessage
|
|
1530
|
+
* @static
|
|
1531
|
+
* @param {douyin.PrivilegeScreenChatMessage} message PrivilegeScreenChatMessage
|
|
1532
|
+
* @param {$protobuf.IConversionOptions} [options] Conversion options
|
|
1533
|
+
* @returns {Object.<string,*>} Plain object
|
|
1534
|
+
*/
|
|
1535
|
+
PrivilegeScreenChatMessage.toObject = function toObject(message, options) {
|
|
1536
|
+
if (!options)
|
|
1537
|
+
options = {};
|
|
1538
|
+
let object = {};
|
|
1539
|
+
if (options.defaults) {
|
|
1540
|
+
object.common = null;
|
|
1541
|
+
object.user = null;
|
|
1542
|
+
object.content = "";
|
|
1543
|
+
}
|
|
1544
|
+
if (message.common != null && message.hasOwnProperty("common"))
|
|
1545
|
+
object.common = $root.douyin.Common.toObject(message.common, options);
|
|
1546
|
+
if (message.user != null && message.hasOwnProperty("user"))
|
|
1547
|
+
object.user = $root.douyin.User.toObject(message.user, options);
|
|
1548
|
+
if (message.content != null && message.hasOwnProperty("content"))
|
|
1549
|
+
object.content = message.content;
|
|
1550
|
+
return object;
|
|
1551
|
+
};
|
|
1552
|
+
/**
|
|
1553
|
+
* Converts this PrivilegeScreenChatMessage to JSON.
|
|
1554
|
+
* @function toJSON
|
|
1555
|
+
* @memberof douyin.PrivilegeScreenChatMessage
|
|
1556
|
+
* @instance
|
|
1557
|
+
* @returns {Object.<string,*>} JSON object
|
|
1558
|
+
*/
|
|
1559
|
+
PrivilegeScreenChatMessage.prototype.toJSON = function toJSON() {
|
|
1560
|
+
return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
|
|
1561
|
+
};
|
|
1562
|
+
/**
|
|
1563
|
+
* Gets the default type url for PrivilegeScreenChatMessage
|
|
1564
|
+
* @function getTypeUrl
|
|
1565
|
+
* @memberof douyin.PrivilegeScreenChatMessage
|
|
1566
|
+
* @static
|
|
1567
|
+
* @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
|
|
1568
|
+
* @returns {string} The default type url
|
|
1569
|
+
*/
|
|
1570
|
+
PrivilegeScreenChatMessage.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
|
|
1571
|
+
if (typeUrlPrefix === undefined) {
|
|
1572
|
+
typeUrlPrefix = "type.googleapis.com";
|
|
1573
|
+
}
|
|
1574
|
+
return typeUrlPrefix + "/douyin.PrivilegeScreenChatMessage";
|
|
1575
|
+
};
|
|
1576
|
+
return PrivilegeScreenChatMessage;
|
|
1577
|
+
})();
|
|
1578
|
+
douyin.ScreenChatMessage = (function () {
|
|
1579
|
+
/**
|
|
1580
|
+
* Properties of a ScreenChatMessage.
|
|
1581
|
+
* @memberof douyin
|
|
1582
|
+
* @interface IScreenChatMessage
|
|
1583
|
+
* @property {douyin.ICommon|null} [common] ScreenChatMessage common
|
|
1584
|
+
* @property {douyin.IUser|null} [user] ScreenChatMessage user
|
|
1585
|
+
* @property {string|null} [content] ScreenChatMessage content
|
|
1586
|
+
* @property {number|Long|null} [eventTime] ScreenChatMessage eventTime
|
|
1587
|
+
*/
|
|
1588
|
+
/**
|
|
1589
|
+
* Constructs a new ScreenChatMessage.
|
|
1590
|
+
* @memberof douyin
|
|
1591
|
+
* @classdesc Represents a ScreenChatMessage.
|
|
1592
|
+
* @implements IScreenChatMessage
|
|
1593
|
+
* @constructor
|
|
1594
|
+
* @param {douyin.IScreenChatMessage=} [properties] Properties to set
|
|
1595
|
+
*/
|
|
1596
|
+
function ScreenChatMessage(properties) {
|
|
1597
|
+
if (properties)
|
|
1598
|
+
for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
|
|
1599
|
+
if (properties[keys[i]] != null)
|
|
1600
|
+
this[keys[i]] = properties[keys[i]];
|
|
1601
|
+
}
|
|
1602
|
+
/**
|
|
1603
|
+
* ScreenChatMessage common.
|
|
1604
|
+
* @member {douyin.ICommon|null|undefined} common
|
|
1605
|
+
* @memberof douyin.ScreenChatMessage
|
|
1606
|
+
* @instance
|
|
1607
|
+
*/
|
|
1608
|
+
ScreenChatMessage.prototype.common = null;
|
|
1609
|
+
/**
|
|
1610
|
+
* ScreenChatMessage user.
|
|
1611
|
+
* @member {douyin.IUser|null|undefined} user
|
|
1612
|
+
* @memberof douyin.ScreenChatMessage
|
|
1613
|
+
* @instance
|
|
1614
|
+
*/
|
|
1615
|
+
ScreenChatMessage.prototype.user = null;
|
|
1616
|
+
/**
|
|
1617
|
+
* ScreenChatMessage content.
|
|
1618
|
+
* @member {string} content
|
|
1619
|
+
* @memberof douyin.ScreenChatMessage
|
|
1620
|
+
* @instance
|
|
1621
|
+
*/
|
|
1622
|
+
ScreenChatMessage.prototype.content = "";
|
|
1623
|
+
/**
|
|
1624
|
+
* ScreenChatMessage eventTime.
|
|
1625
|
+
* @member {number|Long} eventTime
|
|
1626
|
+
* @memberof douyin.ScreenChatMessage
|
|
1627
|
+
* @instance
|
|
1628
|
+
*/
|
|
1629
|
+
ScreenChatMessage.prototype.eventTime = $util.Long ? $util.Long.fromBits(0, 0, true) : 0;
|
|
1630
|
+
/**
|
|
1631
|
+
* Creates a new ScreenChatMessage instance using the specified properties.
|
|
1632
|
+
* @function create
|
|
1633
|
+
* @memberof douyin.ScreenChatMessage
|
|
1634
|
+
* @static
|
|
1635
|
+
* @param {douyin.IScreenChatMessage=} [properties] Properties to set
|
|
1636
|
+
* @returns {douyin.ScreenChatMessage} ScreenChatMessage instance
|
|
1637
|
+
*/
|
|
1638
|
+
ScreenChatMessage.create = function create(properties) {
|
|
1639
|
+
return new ScreenChatMessage(properties);
|
|
1640
|
+
};
|
|
1641
|
+
/**
|
|
1642
|
+
* Encodes the specified ScreenChatMessage message. Does not implicitly {@link douyin.ScreenChatMessage.verify|verify} messages.
|
|
1643
|
+
* @function encode
|
|
1644
|
+
* @memberof douyin.ScreenChatMessage
|
|
1645
|
+
* @static
|
|
1646
|
+
* @param {douyin.IScreenChatMessage} message ScreenChatMessage message or plain object to encode
|
|
1647
|
+
* @param {$protobuf.Writer} [writer] Writer to encode to
|
|
1648
|
+
* @returns {$protobuf.Writer} Writer
|
|
1649
|
+
*/
|
|
1650
|
+
ScreenChatMessage.encode = function encode(message, writer) {
|
|
1651
|
+
if (!writer)
|
|
1652
|
+
writer = $Writer.create();
|
|
1653
|
+
if (message.common != null && Object.hasOwnProperty.call(message, "common"))
|
|
1654
|
+
$root.douyin.Common.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim();
|
|
1655
|
+
if (message.user != null && Object.hasOwnProperty.call(message, "user"))
|
|
1656
|
+
$root.douyin.User.encode(message.user, writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim();
|
|
1657
|
+
if (message.content != null && Object.hasOwnProperty.call(message, "content"))
|
|
1658
|
+
writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.content);
|
|
1659
|
+
if (message.eventTime != null && Object.hasOwnProperty.call(message, "eventTime"))
|
|
1660
|
+
writer.uint32(/* id 12, wireType 0 =*/ 96).uint64(message.eventTime);
|
|
1661
|
+
return writer;
|
|
1662
|
+
};
|
|
1663
|
+
/**
|
|
1664
|
+
* Encodes the specified ScreenChatMessage message, length delimited. Does not implicitly {@link douyin.ScreenChatMessage.verify|verify} messages.
|
|
1665
|
+
* @function encodeDelimited
|
|
1666
|
+
* @memberof douyin.ScreenChatMessage
|
|
1667
|
+
* @static
|
|
1668
|
+
* @param {douyin.IScreenChatMessage} message ScreenChatMessage message or plain object to encode
|
|
1669
|
+
* @param {$protobuf.Writer} [writer] Writer to encode to
|
|
1670
|
+
* @returns {$protobuf.Writer} Writer
|
|
1671
|
+
*/
|
|
1672
|
+
ScreenChatMessage.encodeDelimited = function encodeDelimited(message, writer) {
|
|
1673
|
+
return this.encode(message, writer).ldelim();
|
|
1674
|
+
};
|
|
1675
|
+
/**
|
|
1676
|
+
* Decodes a ScreenChatMessage message from the specified reader or buffer.
|
|
1677
|
+
* @function decode
|
|
1678
|
+
* @memberof douyin.ScreenChatMessage
|
|
1679
|
+
* @static
|
|
1680
|
+
* @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
|
|
1681
|
+
* @param {number} [length] Message length if known beforehand
|
|
1682
|
+
* @returns {douyin.ScreenChatMessage} ScreenChatMessage
|
|
1683
|
+
* @throws {Error} If the payload is not a reader or valid buffer
|
|
1684
|
+
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
|
1685
|
+
*/
|
|
1686
|
+
ScreenChatMessage.decode = function decode(reader, length) {
|
|
1687
|
+
if (!(reader instanceof $Reader))
|
|
1688
|
+
reader = $Reader.create(reader);
|
|
1689
|
+
let end = length === undefined ? reader.len : reader.pos + length, message = new $root.douyin.ScreenChatMessage();
|
|
1690
|
+
while (reader.pos < end) {
|
|
1691
|
+
let tag = reader.uint32();
|
|
1692
|
+
switch (tag >>> 3) {
|
|
1693
|
+
case 1: {
|
|
1694
|
+
message.common = $root.douyin.Common.decode(reader, reader.uint32());
|
|
1695
|
+
break;
|
|
1696
|
+
}
|
|
1697
|
+
case 2: {
|
|
1698
|
+
message.user = $root.douyin.User.decode(reader, reader.uint32());
|
|
1699
|
+
break;
|
|
1700
|
+
}
|
|
1701
|
+
case 4: {
|
|
1702
|
+
message.content = reader.string();
|
|
1703
|
+
break;
|
|
1704
|
+
}
|
|
1705
|
+
case 12: {
|
|
1706
|
+
message.eventTime = reader.uint64();
|
|
1707
|
+
break;
|
|
1708
|
+
}
|
|
1709
|
+
default:
|
|
1710
|
+
reader.skipType(tag & 7);
|
|
1711
|
+
break;
|
|
1712
|
+
}
|
|
1713
|
+
}
|
|
1714
|
+
return message;
|
|
1715
|
+
};
|
|
1716
|
+
/**
|
|
1717
|
+
* Decodes a ScreenChatMessage message from the specified reader or buffer, length delimited.
|
|
1718
|
+
* @function decodeDelimited
|
|
1719
|
+
* @memberof douyin.ScreenChatMessage
|
|
1720
|
+
* @static
|
|
1721
|
+
* @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
|
|
1722
|
+
* @returns {douyin.ScreenChatMessage} ScreenChatMessage
|
|
1723
|
+
* @throws {Error} If the payload is not a reader or valid buffer
|
|
1724
|
+
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
|
1725
|
+
*/
|
|
1726
|
+
ScreenChatMessage.decodeDelimited = function decodeDelimited(reader) {
|
|
1727
|
+
if (!(reader instanceof $Reader))
|
|
1728
|
+
reader = new $Reader(reader);
|
|
1729
|
+
return this.decode(reader, reader.uint32());
|
|
1730
|
+
};
|
|
1731
|
+
/**
|
|
1732
|
+
* Verifies a ScreenChatMessage message.
|
|
1733
|
+
* @function verify
|
|
1734
|
+
* @memberof douyin.ScreenChatMessage
|
|
1735
|
+
* @static
|
|
1736
|
+
* @param {Object.<string,*>} message Plain object to verify
|
|
1737
|
+
* @returns {string|null} `null` if valid, otherwise the reason why it is not
|
|
1738
|
+
*/
|
|
1739
|
+
ScreenChatMessage.verify = function verify(message) {
|
|
1740
|
+
if (typeof message !== "object" || message === null)
|
|
1741
|
+
return "object expected";
|
|
1742
|
+
if (message.common != null && message.hasOwnProperty("common")) {
|
|
1743
|
+
let error = $root.douyin.Common.verify(message.common);
|
|
1744
|
+
if (error)
|
|
1745
|
+
return "common." + error;
|
|
1746
|
+
}
|
|
1747
|
+
if (message.user != null && message.hasOwnProperty("user")) {
|
|
1748
|
+
let error = $root.douyin.User.verify(message.user);
|
|
1749
|
+
if (error)
|
|
1750
|
+
return "user." + error;
|
|
1751
|
+
}
|
|
1752
|
+
if (message.content != null && message.hasOwnProperty("content"))
|
|
1753
|
+
if (!$util.isString(message.content))
|
|
1754
|
+
return "content: string expected";
|
|
1755
|
+
if (message.eventTime != null && message.hasOwnProperty("eventTime"))
|
|
1756
|
+
if (!$util.isInteger(message.eventTime) &&
|
|
1757
|
+
!(message.eventTime &&
|
|
1758
|
+
$util.isInteger(message.eventTime.low) &&
|
|
1759
|
+
$util.isInteger(message.eventTime.high)))
|
|
1760
|
+
return "eventTime: integer|Long expected";
|
|
1761
|
+
return null;
|
|
1762
|
+
};
|
|
1763
|
+
/**
|
|
1764
|
+
* Creates a ScreenChatMessage message from a plain object. Also converts values to their respective internal types.
|
|
1765
|
+
* @function fromObject
|
|
1766
|
+
* @memberof douyin.ScreenChatMessage
|
|
1767
|
+
* @static
|
|
1768
|
+
* @param {Object.<string,*>} object Plain object
|
|
1769
|
+
* @returns {douyin.ScreenChatMessage} ScreenChatMessage
|
|
1770
|
+
*/
|
|
1771
|
+
ScreenChatMessage.fromObject = function fromObject(object) {
|
|
1772
|
+
if (object instanceof $root.douyin.ScreenChatMessage)
|
|
1773
|
+
return object;
|
|
1774
|
+
let message = new $root.douyin.ScreenChatMessage();
|
|
1775
|
+
if (object.common != null) {
|
|
1776
|
+
if (typeof object.common !== "object")
|
|
1777
|
+
throw TypeError(".douyin.ScreenChatMessage.common: object expected");
|
|
1778
|
+
message.common = $root.douyin.Common.fromObject(object.common);
|
|
1779
|
+
}
|
|
1780
|
+
if (object.user != null) {
|
|
1781
|
+
if (typeof object.user !== "object")
|
|
1782
|
+
throw TypeError(".douyin.ScreenChatMessage.user: object expected");
|
|
1783
|
+
message.user = $root.douyin.User.fromObject(object.user);
|
|
1784
|
+
}
|
|
1785
|
+
if (object.content != null)
|
|
1786
|
+
message.content = String(object.content);
|
|
1787
|
+
if (object.eventTime != null)
|
|
1788
|
+
if ($util.Long)
|
|
1789
|
+
(message.eventTime = $util.Long.fromValue(object.eventTime)).unsigned = true;
|
|
1790
|
+
else if (typeof object.eventTime === "string")
|
|
1791
|
+
message.eventTime = parseInt(object.eventTime, 10);
|
|
1792
|
+
else if (typeof object.eventTime === "number")
|
|
1793
|
+
message.eventTime = object.eventTime;
|
|
1794
|
+
else if (typeof object.eventTime === "object")
|
|
1795
|
+
message.eventTime = new $util.LongBits(object.eventTime.low >>> 0, object.eventTime.high >>> 0).toNumber(true);
|
|
1796
|
+
return message;
|
|
1797
|
+
};
|
|
1798
|
+
/**
|
|
1799
|
+
* Creates a plain object from a ScreenChatMessage message. Also converts values to other types if specified.
|
|
1800
|
+
* @function toObject
|
|
1801
|
+
* @memberof douyin.ScreenChatMessage
|
|
1802
|
+
* @static
|
|
1803
|
+
* @param {douyin.ScreenChatMessage} message ScreenChatMessage
|
|
1804
|
+
* @param {$protobuf.IConversionOptions} [options] Conversion options
|
|
1805
|
+
* @returns {Object.<string,*>} Plain object
|
|
1806
|
+
*/
|
|
1807
|
+
ScreenChatMessage.toObject = function toObject(message, options) {
|
|
1808
|
+
if (!options)
|
|
1809
|
+
options = {};
|
|
1810
|
+
let object = {};
|
|
1811
|
+
if (options.defaults) {
|
|
1812
|
+
object.common = null;
|
|
1813
|
+
object.user = null;
|
|
1814
|
+
object.content = "";
|
|
1815
|
+
if ($util.Long) {
|
|
1816
|
+
let long = new $util.Long(0, 0, true);
|
|
1817
|
+
object.eventTime =
|
|
1818
|
+
options.longs === String
|
|
1819
|
+
? long.toString()
|
|
1820
|
+
: options.longs === Number
|
|
1821
|
+
? long.toNumber()
|
|
1822
|
+
: long;
|
|
1823
|
+
}
|
|
1824
|
+
else
|
|
1825
|
+
object.eventTime = options.longs === String ? "0" : 0;
|
|
1826
|
+
}
|
|
1827
|
+
if (message.common != null && message.hasOwnProperty("common"))
|
|
1828
|
+
object.common = $root.douyin.Common.toObject(message.common, options);
|
|
1829
|
+
if (message.user != null && message.hasOwnProperty("user"))
|
|
1830
|
+
object.user = $root.douyin.User.toObject(message.user, options);
|
|
1831
|
+
if (message.content != null && message.hasOwnProperty("content"))
|
|
1832
|
+
object.content = message.content;
|
|
1833
|
+
if (message.eventTime != null && message.hasOwnProperty("eventTime"))
|
|
1834
|
+
if (typeof message.eventTime === "number")
|
|
1835
|
+
object.eventTime =
|
|
1836
|
+
options.longs === String ? String(message.eventTime) : message.eventTime;
|
|
1837
|
+
else
|
|
1838
|
+
object.eventTime =
|
|
1839
|
+
options.longs === String
|
|
1840
|
+
? $util.Long.prototype.toString.call(message.eventTime)
|
|
1841
|
+
: options.longs === Number
|
|
1842
|
+
? new $util.LongBits(message.eventTime.low >>> 0, message.eventTime.high >>> 0).toNumber(true)
|
|
1843
|
+
: message.eventTime;
|
|
1844
|
+
return object;
|
|
1845
|
+
};
|
|
1846
|
+
/**
|
|
1847
|
+
* Converts this ScreenChatMessage to JSON.
|
|
1848
|
+
* @function toJSON
|
|
1849
|
+
* @memberof douyin.ScreenChatMessage
|
|
1850
|
+
* @instance
|
|
1851
|
+
* @returns {Object.<string,*>} JSON object
|
|
1852
|
+
*/
|
|
1853
|
+
ScreenChatMessage.prototype.toJSON = function toJSON() {
|
|
1854
|
+
return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
|
|
1855
|
+
};
|
|
1856
|
+
/**
|
|
1857
|
+
* Gets the default type url for ScreenChatMessage
|
|
1858
|
+
* @function getTypeUrl
|
|
1859
|
+
* @memberof douyin.ScreenChatMessage
|
|
1860
|
+
* @static
|
|
1861
|
+
* @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
|
|
1862
|
+
* @returns {string} The default type url
|
|
1863
|
+
*/
|
|
1864
|
+
ScreenChatMessage.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
|
|
1865
|
+
if (typeUrlPrefix === undefined) {
|
|
1866
|
+
typeUrlPrefix = "type.googleapis.com";
|
|
1867
|
+
}
|
|
1868
|
+
return typeUrlPrefix + "/douyin.ScreenChatMessage";
|
|
1869
|
+
};
|
|
1870
|
+
return ScreenChatMessage;
|
|
1871
|
+
})();
|
|
1335
1872
|
douyin.LandscapeAreaCommon = (function () {
|
|
1336
1873
|
/**
|
|
1337
1874
|
* Properties of a LandscapeAreaCommon.
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ import type {
|
|
|
9
9
|
RoomStatsMessage,
|
|
10
10
|
RoomRankMessage,
|
|
11
11
|
Message,
|
|
12
|
+
PrivilegeScreenChatMessage,
|
|
13
|
+
ScreenChatMessage,
|
|
12
14
|
} from "../types/types.js";
|
|
13
15
|
import WebSocket from "ws";
|
|
14
16
|
|
|
@@ -27,6 +29,8 @@ interface Events {
|
|
|
27
29
|
roomStats: (message: RoomStatsMessage) => void;
|
|
28
30
|
roomRank: (message: RoomRankMessage) => void;
|
|
29
31
|
message: (message: Message) => void;
|
|
32
|
+
privilegeScreenChat: (message: PrivilegeScreenChatMessage) => void;
|
|
33
|
+
screenChat: (message: ScreenChatMessage) => void;
|
|
30
34
|
}
|
|
31
35
|
declare class DouYinDanmaClient extends TypedEmitter<Events> {
|
|
32
36
|
private ws: WebSocket;
|
package/types/types.d.ts
CHANGED
|
@@ -192,6 +192,19 @@ export interface RoomRankMessage {
|
|
|
192
192
|
}[];
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
+
export interface PrivilegeScreenChatMessage {
|
|
196
|
+
common: Common & { method: "WebcastPrivilegeScreenChatMessage" };
|
|
197
|
+
user: User;
|
|
198
|
+
content: string;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export interface ScreenChatMessage {
|
|
202
|
+
common: Common & { method: "WebcastScreenChatMessage" };
|
|
203
|
+
user: User;
|
|
204
|
+
content: string;
|
|
205
|
+
eventTime: string;
|
|
206
|
+
}
|
|
207
|
+
|
|
195
208
|
export type Message =
|
|
196
209
|
| ChatMessage
|
|
197
210
|
| MemberMessage
|
|
@@ -200,4 +213,6 @@ export type Message =
|
|
|
200
213
|
| GiftMessage
|
|
201
214
|
| RoomUserSeqMessage
|
|
202
215
|
| RoomStatsMessage
|
|
203
|
-
| RoomRankMessage
|
|
216
|
+
| RoomRankMessage
|
|
217
|
+
| PrivilegeScreenChatMessage
|
|
218
|
+
| ScreenChatMessage;
|