Skip to content

Commit fa3f998

Browse files
author
wangxiang06
committed
fix: send responseReceived with EventSource type for SSE requests
1 parent fa210e9 commit fa3f998

2 files changed

Lines changed: 37 additions & 2 deletions

File tree

packages/network-debugger/src/core/fetch.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ export function fetchProxyFactory(fetchFn: typeof fetch, mainProcess: MainProces
3939
}
4040
requestDetail.requestData = options?.body
4141

42+
requestDetail.loadCallFrames()
43+
4244
const result = fetchFn(request as string | Request, options)
4345
.then(fetchResponseHandlerFactory(requestDetail, mainProcess))
4446
.catch(fetchErrorHandlerFactory(requestDetail, mainProcess))
@@ -80,8 +82,11 @@ async function handleEventStreamResponse(
8082
let buffer = ''
8183
const allChunks: Uint8Array[] = []
8284

83-
// Send initial response info
84-
mainProcess.sendRequest('updateRequest', requestDetail)
85+
// Send responseReceived first (type: EventSource) so DevTools knows this is an SSE request
86+
mainProcess.send({
87+
type: 'eventSourceResponseReceived',
88+
data: requestDetail
89+
})
8590

8691
try {
8792
while (true) {

packages/network-debugger/src/fork/module/network/index.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,36 @@ export const networkPlugin = createPlugin('network', ({ devtool, core }) => {
197197
endRequest(request)
198198
})
199199

200+
// Handle SSE response received - send responseReceived with type: EventSource before streaming messages
201+
useHandler<RequestDetail>('eventSourceResponseReceived', ({ data }) => {
202+
const request = new RequestDetail(data)
203+
requests[request.id] = request
204+
devtool.updateTimestamp()
205+
const headers = new RequestHeaderPipe(request.responseHeaders)
206+
const contentType = headers.getHeader('content-type') || 'text/event-stream'
207+
208+
devtool.send({
209+
method: 'Network.responseReceived',
210+
params: {
211+
requestId: request.id,
212+
frameId,
213+
loaderId,
214+
timestamp: devtool.timestamp,
215+
type: 'EventSource',
216+
response: {
217+
url: request.url,
218+
status: request.responseStatusCode,
219+
statusText: request.responseStatusCode === 200 ? 'OK' : '',
220+
headers: request.responseHeaders,
221+
connectionReused: false,
222+
encodedDataLength: 0,
223+
charset: 'utf-8',
224+
mimeType: toMimeType(contentType)
225+
}
226+
}
227+
})
228+
})
229+
200230
useHandler<{
201231
id: string
202232
rawData: Array<number>

0 commit comments

Comments
 (0)