Skip to content
This repository has been archived by the owner on Feb 5, 2025. It is now read-only.

Commit

Permalink
try to fix socket api
Browse files Browse the repository at this point in the history
  • Loading branch information
pompurin404 committed Sep 29, 2024
1 parent 323e583 commit e9298dd
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 8 deletions.
17 changes: 14 additions & 3 deletions src/main/core/mihomoApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ async function mihomoHttp<T>(method: HttpMethod, path: string, data?: object): P
const client = net.connect(
process.platform === 'win32' ? mihomoPipe : join(mihomoWorkDir(), mihomoUnix)
)
client.on('data', function (res) {
const parseResult = (str: string): void => {
try {
const data = res.toString().split('\r\n\r\n')[1]
const data = str.split('\r\n\r\n')[1]
const json = trimJson(data)
if (res.toString().includes('HTTP/1.1 4') || res.toString().includes('HTTP/1.1 5')) {
if (str.includes('HTTP/1.1 4') || str.includes('HTTP/1.1 5')) {
reject(json ? JSON.parse(json) : data)
} else {
resolve(json ? JSON.parse(json) : undefined)
Expand All @@ -48,6 +48,17 @@ async function mihomoHttp<T>(method: HttpMethod, path: string, data?: object): P
} finally {
client.end()
}
}
let buffer = ''
client.on('data', function (res) {
if (res.toString().includes('Transfer-Encoding: chunked') || buffer !== '') {
buffer += res.toString()
if (buffer.endsWith('\r\n\r\n')) {
parseResult(buffer)
}
} else {
parseResult(res.toString())
}
})
client.on('error', function (error) {
reject(error)
Expand Down
7 changes: 6 additions & 1 deletion src/main/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,12 @@ app.whenReady().then(async () => {
} catch (e) {
dialog.showErrorBox('内核启动出错', `${e}`)
}
await startMonitor()
try {
await startMonitor()
} catch {
// ignore
}

// Default open or close DevTools by F12 in development
// and ignore CommandOrControl + R in production.
// see https://github.com/alex8088/electron-toolkit/tree/master/packages/utils
Expand Down
7 changes: 5 additions & 2 deletions src/main/utils/init.ts
Original file line number Diff line number Diff line change
Expand Up @@ -192,11 +192,14 @@ async function migration(): Promise<void> {
await patchAppConfig({ envType: [envType] })
}
// use unix socket
if (process.platform !== 'win32' && !externalControllerUnix) {
if (process.platform !== 'win32' && externalControllerUnix !== 'mihomo-party.sock') {
await patchControledMihomoConfig({ 'external-controller-unix': 'mihomo-party.sock' })
}
// use named pipe
if (process.platform === 'win32' && !externalControllerPipe) {
if (
process.platform === 'win32' &&
externalControllerPipe !== '\\\\.\\pipe\\MihomoParty\\mihomo'
) {
await patchControledMihomoConfig({
'external-controller-pipe': '\\\\.\\pipe\\MihomoParty\\mihomo'
})
Expand Down
4 changes: 2 additions & 2 deletions src/renderer/src/pages/proxies.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ const Proxies: React.FC = () => {
if (groups.length !== searchValue.length) setSearchValue(Array(groups.length).fill(''))
groups.forEach((group, index) => {
if (isOpen[index]) {
let groupProxies = group.all.filter((proxy) =>
includesIgnoreCase(proxy.name, searchValue[index])
let groupProxies = group.all.filter(
(proxy) => proxy && includesIgnoreCase(proxy.name, searchValue[index])
)
const count = Math.floor(groupProxies.length / cols)
groupCounts.push(groupProxies.length % cols === 0 ? count : count + 1)
Expand Down

0 comments on commit e9298dd

Please sign in to comment.