-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
149 lines (139 loc) · 3.27 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
const SubClient = require('subscriptions-transport-ws')
const ApClient = require('apollo-client')
const apolloLinkWs = require('apollo-link-ws')
const apolloCache = require('apollo-cache-inmemory')
const ws = require('ws')
const gql = require('graphql-tag')
const GRAPHQL_ENDPOINT = 'tcp://data.tronwallet.me/graphql';
const client = new SubClient.SubscriptionClient(GRAPHQL_ENDPOINT, {
reconnect: true,
}, ws);
const wsLink = new apolloLinkWs.WebSocketLink(client);
const apolloClient = new ApClient.ApolloClient({
link: wsLink,
cache: new apolloCache.InMemoryCache(),
});
const blockListener = (handler) => {
apolloClient.subscribe({
query: gql`
subscription block{
eventsTopicBlock{
timeStamp
triggerName
blockNumber
blockHash
transactionSize
latestSolidifiedBlockNumber
transactionList
}
}`,
variables: {}
}).subscribe({
next (data) {
handler(data)
}
});
}
const transactionListener = (handler) => {
apolloClient.subscribe({
query: gql`
subscription transaction{
eventsTopicTransaction{
timeStamp
triggerName
transactionId
blockHash
blockNumber
energyUsage
energyFee
originEnergyUsage
energyUsageTotal
netUsage
netFee
result
contractAddress
contractType
feeLimit
contractCallValue
contractResult
fromAddress
toAddress
assetName
assetAmount
latestSolidifiedBlockNumber
internalTrananctionList
}
}`,
variables: {}
}).subscribe({
next (data) {
handler(data)
}
});
}
const contractEventListener = (contractAddress = '', handler) => {
apolloClient.subscribe({
query: gql`
subscription contractEvent($contractAddress: String){
eventsTopicContractEvent(contractAddress: $contractAddress){
timeStamp
triggerName
uniqueId
transactionId
contractAddress
callerAddress
originAddress
creatorAddress
blockNumber
removed
latestSolidifiedBlockNumber
logInfo
rawData
abi
eventSignature
eventSignatureFull
eventName
topicMap
dataMap
}
}`,
variables: { contractAddress }
}).subscribe({
next (data) {
handler(data)
}
});
}
const contractLogListener = (contractAddress = '', handler) => {
apolloClient.subscribe({
query: gql`
subscription contractLog($contractAddress: String){
eventsTopicContractLog(contractAddress: $contractAddress){
timeStamp
triggerName
uniqueId
transactionId
contractAddress
callerAddress
originAddress
creatorAddress
blockNumber
removed
latestSolidifiedBlockNumber
topicList
data
}
}`,
variables: { contractAddress }
}).subscribe({
next (data) {
handler(data)
}
});
}
module.exports = {
blockListener,
transactionListener,
contractEventListener,
contractLogListener
}