MCPcopy Index your code
hub / github.com/claude-code-best/claude-code / startPollLoop

Function startPollLoop

packages/weixin/src/monitor.ts:136–214  ·  view source on GitHub ↗
(params: {
  baseUrl: string
  cdnBaseUrl: string
  token: string
  onMessage: OnMessageCallback
  onPermissionResponse?: OnPermissionResponseCallback
  abortSignal: AbortSignal
})

Source from the content-addressed store, hash-verified

134}
135
136export async function startPollLoop(params: {
137 baseUrl: string
138 cdnBaseUrl: string
139 token: string
140 onMessage: OnMessageCallback
141 onPermissionResponse?: OnPermissionResponseCallback
142 abortSignal: AbortSignal
143}): Promise<void> {
144 const {
145 baseUrl,
146 cdnBaseUrl,
147 token,
148 onMessage,
149 onPermissionResponse,
150 abortSignal,
151 } = params
152 let cursor = loadCursor()
153 let consecutiveErrors = 0
154
155 process.stderr.write('[weixin] Starting message poll loop...\n')
156
157 while (!abortSignal.aborted) {
158 try {
159 const response = await getUpdates(baseUrl, token, cursor, abortSignal)
160
161 if (response.errcode === -14) {
162 process.stderr.write(
163 '[weixin] Session expired (errcode -14). Pausing for 30s...\n',
164 )
165 await new Promise(resolve => setTimeout(resolve, 30_000))
166 continue
167 }
168
169 if (response.ret !== 0 && response.ret !== undefined) {
170 throw new Error(
171 `getUpdates error: ret=${response.ret} errcode=${response.errcode} ${response.errmsg}`,
172 )
173 }
174
175 consecutiveErrors = 0
176
177 if (response.get_updates_buf) {
178 cursor = response.get_updates_buf
179 saveCursor(cursor)
180 }
181
182 if (response.msgs && response.msgs.length > 0) {
183 for (const msg of response.msgs) {
184 await processMessage(msg, {
185 baseUrl,
186 cdnBaseUrl,
187 token,
188 onMessage,
189 onPermissionResponse,
190 })
191 }
192 }
193 } catch (error) {

Callers 1

runWeixinMcpServerFunction · 0.85

Calls 5

loadCursorFunction · 0.85
getUpdatesFunction · 0.85
saveCursorFunction · 0.85
processMessageFunction · 0.85
writeMethod · 0.45

Tested by

no test coverage detected