Skip to content

Commit f822e67

Browse files
authored
feat: use SSE instead of ws (#667)
1 parent 407a3af commit f822e67

File tree

15 files changed

+207
-213
lines changed

15 files changed

+207
-213
lines changed

bun.lock

Lines changed: 1 addition & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,9 @@
3131
"dotenv": "^16.4.5",
3232
"dotenv-cli": "^7.4.2",
3333
"firebase-admin": "^12.2.0",
34-
"lru-cache": "^11.0.2",
3534
"hono": "^4.7.1",
35+
"lru-cache": "^11.0.2",
3636
"sharp": "^0.33.5",
37-
"socket.io": "^4.7.5",
3837
"sql-formatter": "^15.4.10",
3938
"zod": "^3.23.8",
4039
},
@@ -67,7 +66,6 @@
6766
"react-easy-crop": "^5.0.8",
6867
"react-hook-form": "^7.53.2",
6968
"react-icons": "^5.3.0",
70-
"socket.io-client": "^4.7.5",
7169
"zod": "^3.23.8",
7270
},
7371
"devDependencies": {
@@ -423,8 +421,6 @@
423421

424422
"@protobufjs/utf8": ["@protobufjs/[email protected]", "", {}, "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="],
425423

426-
"@socket.io/component-emitter": ["@socket.io/[email protected]", "", {}, "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="],
427-
428424
"@swc/counter": ["@swc/[email protected]", "", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="],
429425

430426
"@swc/helpers": ["@swc/[email protected]", "", { "dependencies": { "@swc/counter": "^0.1.3", "tslib": "^2.4.0" } }, "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A=="],
@@ -491,8 +487,6 @@
491487

492488
"abort-controller": ["[email protected]", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="],
493489

494-
"accepts": ["[email protected]", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="],
495-
496490
"acorn": ["[email protected]", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="],
497491

498492
"acorn-jsx": ["[email protected]", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="],
@@ -529,8 +523,6 @@
529523

530524
"base64-js": ["[email protected]", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
531525

532-
"base64id": ["[email protected]", "", {}, "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="],
533-
534526
"bignumber.js": ["[email protected]", "", {}, "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug=="],
535527

536528
"binary-extensions": ["[email protected]", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="],
@@ -647,12 +639,6 @@
647639

648640
"end-of-stream": ["[email protected]", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q=="],
649641

650-
"engine.io": ["[email protected]", "", { "dependencies": { "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1" } }, "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g=="],
651-
652-
"engine.io-client": ["[email protected]", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1", "xmlhttprequest-ssl": "~2.1.1" } }, "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w=="],
653-
654-
"engine.io-parser": ["[email protected]", "", {}, "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q=="],
655-
656642
"environment": ["[email protected]", "", {}, "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q=="],
657643

658644
"error-ex": ["[email protected]", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="],
@@ -945,8 +931,6 @@
945931

946932
"nearley": ["[email protected]", "", { "dependencies": { "commander": "^2.19.0", "moo": "^0.5.0", "railroad-diagrams": "^1.0.0", "randexp": "0.4.6" }, "bin": { "nearleyc": "bin/nearleyc.js", "nearley-test": "bin/nearley-test.js", "nearley-unparse": "bin/nearley-unparse.js", "nearley-railroad": "bin/nearley-railroad.js" } }, "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ=="],
947933

948-
"negotiator": ["[email protected]", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="],
949-
950934
"next": ["[email protected]", "", { "dependencies": { "@next/env": "14.2.24", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "graceful-fs": "^4.2.11", "postcss": "8.4.31", "styled-jsx": "5.1.1" }, "optionalDependencies": { "@next/swc-darwin-arm64": "14.2.24", "@next/swc-darwin-x64": "14.2.24", "@next/swc-linux-arm64-gnu": "14.2.24", "@next/swc-linux-arm64-musl": "14.2.24", "@next/swc-linux-x64-gnu": "14.2.24", "@next/swc-linux-x64-musl": "14.2.24", "@next/swc-win32-arm64-msvc": "14.2.24", "@next/swc-win32-ia32-msvc": "14.2.24", "@next/swc-win32-x64-msvc": "14.2.24" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-En8VEexSJ0Py2FfVnRRh8gtERwDRaJGNvsvad47ShkC2Yi8AXQPXEA2vKoDJlGFSj5WE5SyF21zNi4M5gyi+SQ=="],
951935

952936
"node-fetch": ["[email protected]", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="],
@@ -1097,14 +1081,6 @@
10971081

10981082
"slice-ansi": ["[email protected]", "", { "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" } }, "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ=="],
10991083

1100-
"socket.io": ["[email protected]", "", { "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" } }, "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg=="],
1101-
1102-
"socket.io-adapter": ["[email protected]", "", { "dependencies": { "debug": "~4.3.4", "ws": "~8.17.1" } }, "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg=="],
1103-
1104-
"socket.io-client": ["[email protected]", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", "engine.io-client": "~6.6.1", "socket.io-parser": "~4.2.4" } }, "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ=="],
1105-
1106-
"socket.io-parser": ["[email protected]", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" } }, "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew=="],
1107-
11081084
"source-map": ["[email protected]", "", {}, "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="],
11091085

11101086
"source-map-js": ["[email protected]", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
@@ -1201,10 +1177,6 @@
12011177

12021178
"wrappy": ["[email protected]", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
12031179

1204-
"ws": ["[email protected]", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ=="],
1205-
1206-
"xmlhttprequest-ssl": ["[email protected]", "", {}, "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ=="],
1207-
12081180
"y18n": ["[email protected]", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="],
12091181

12101182
"yallist": ["[email protected]", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="],
@@ -1245,10 +1217,6 @@
12451217

12461218
"cosmiconfig/yaml": ["[email protected]", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="],
12471219

1248-
"engine.io/debug": ["[email protected]", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="],
1249-
1250-
"engine.io-client/debug": ["[email protected]", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="],
1251-
12521220
"error-ex/is-arrayish": ["[email protected]", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="],
12531221

12541222
"eslint/chalk": ["[email protected]", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
@@ -1293,14 +1261,6 @@
12931261

12941262
"slice-ansi/ansi-styles": ["[email protected]", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="],
12951263

1296-
"socket.io/debug": ["[email protected]", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="],
1297-
1298-
"socket.io-adapter/debug": ["[email protected]", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="],
1299-
1300-
"socket.io-client/debug": ["[email protected]", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="],
1301-
1302-
"socket.io-parser/debug": ["[email protected]", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="],
1303-
13041264
"string-width-cjs/emoji-regex": ["[email protected]", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
13051265

13061266
"string-width-cjs/is-fullwidth-code-point": ["[email protected]", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],

common/types.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// common/type/types.ts
22

3+
import type { Message } from "./zod/types.ts";
4+
35
export type {
46
UserID,
57
GUID,
@@ -34,3 +36,23 @@ export type {
3436
InitSharedRoom,
3537
UpdateRoom,
3638
} from "./zod/types.ts";
39+
40+
export type SSEChatEvents = {
41+
"Chat:Append": {
42+
message: Message;
43+
sender: string; // user name
44+
};
45+
"Chat:Update": {
46+
id: number;
47+
message: Message;
48+
};
49+
"Chat:Delete": {
50+
id: number;
51+
};
52+
"Chat:Ping": "";
53+
};
54+
export type SSEChatEventEnum = "Chat:Append" | "Chat:Update" | "Chat:Delete";
55+
export type SSEChatEvent<T extends SSEChatEventEnum> = {
56+
event: T;
57+
data: SSEChatEvents[T];
58+
};

package.json

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
{
22
"name": "course-mate",
33
"version": "1.0.0",
4-
"description": "",
4+
"author": "",
55
"main": "index.js",
6+
"devDependencies": {
7+
"@biomejs/biome": "^1.9.1",
8+
"lefthook": "^1.10.10",
9+
"lint-staged": "^15.2.10"
10+
},
11+
"description": "",
12+
"keywords": [],
13+
"license": "ISC",
614
"scripts": {
715
"prepare": "lefthook install && (cd server; bun run prepare)",
816
"check": "bun type && bun style:check",
@@ -27,15 +35,6 @@
2735
"test": "make test",
2836
"spell": "bunx cspell --quiet ."
2937
},
30-
"keywords": [],
31-
"author": "",
32-
"license": "ISC",
33-
"workspaces": ["common", "web", "server"],
34-
"devDependencies": {
35-
"@biomejs/biome": "^1.9.1",
36-
"lefthook": "^1.10.10",
37-
"lint-staged": "^15.2.10"
38-
},
39-
"dependencies": {},
40-
"trustedDependencies": ["@biomejs/biome", "lefthook"]
38+
"trustedDependencies": ["@biomejs/biome", "lefthook"],
39+
"workspaces": ["common", "web", "server"]
4140
}

server/package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"main": "src/index.ts",
66
"scripts": {
77
"prepare": "bun --env-file=./.env.dev prisma generate --sql || (echo 'please set DATABASE_URL in server/.env.dev' && exit 1)",
8-
"dev": "bun --watch src/main.ts",
8+
"dev": "bun --watch src/index.ts",
99
"build": "tsc",
1010
"serve": "bun target/main.js"
1111
},
@@ -24,10 +24,9 @@
2424
"dotenv": "^16.4.5",
2525
"dotenv-cli": "^7.4.2",
2626
"firebase-admin": "^12.2.0",
27-
"lru-cache": "^11.0.2",
2827
"hono": "^4.7.1",
28+
"lru-cache": "^11.0.2",
2929
"sharp": "^0.33.5",
30-
"socket.io": "^4.7.5",
3130
"sql-formatter": "^15.4.10",
3231
"zod": "^3.23.8"
3332
},

server/src/functions/chat.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type {
88
SendMessage,
99
ShareRoomID,
1010
} from "common/types";
11+
import { HTTPException } from "hono/http-exception";
1112
import * as db from "../database/chat";
1213
import { areAllMatched, getRelation } from "../database/matches";
1314
import { getUserByID } from "../database/users";
@@ -37,12 +38,13 @@ export async function sendDM(
3738
from: UserID,
3839
to: UserID,
3940
send: SendMessage,
40-
): Promise<http.Response<Message>> {
41+
): Promise<Message> {
4142
const rel = await getRelation(from, to);
4243
if (rel.status === "REJECTED")
43-
return http.forbidden(
44-
"You cannot send a message because the friendship request was rejected.",
45-
);
44+
throw new HTTPException(403, {
45+
message:
46+
"You cannot send a message because the friendship request was rejected.",
47+
});
4648

4749
// they are now MATCHED
4850
const msg: Omit<Omit<Message, "id">, "isPicture"> = {
@@ -53,8 +55,9 @@ export async function sendDM(
5355
};
5456

5557
const result = await db.sendDM(rel.id, msg);
56-
if (!result) return http.internalError("Failed to send DM");
57-
return http.created(result);
58+
if (!result)
59+
throw new HTTPException(500, { message: "Failed to send message" });
60+
return result;
5861
}
5962

6063
export async function getDM(

server/src/index.ts

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
import type { Server } from "node:http";
21
import { Hono } from "hono";
32
import { cors } from "hono/cors";
43
import { HTTPException } from "hono/http-exception";
5-
import { initializeSocket } from "./lib/socket/socket";
64
import { allUrlMustBeValid, env } from "./lib/utils";
75
import chatRoutes from "./router/chat";
86
import coursesRoutes from "./router/courses";
97
import matchesRoutes from "./router/matches";
108
import pictureRoutes from "./router/picture";
119
import requestsRoutes from "./router/requests";
10+
import sseRoutes from "./router/sse";
1211
import subjectsRoutes from "./router/subjects";
1312
import usersRoutes from "./router/users";
1413

@@ -31,12 +30,11 @@ if (corsOptions.origin.length > 1) {
3130
const app = new Hono()
3231
.onError((err, c) => {
3332
if (err instanceof HTTPException) {
34-
console.error(err);
35-
c.status(err.status);
36-
return c.json({ error: err });
33+
console.log(err);
34+
return c.json({ error: err.message }, err.status);
3735
}
38-
c.status(500);
39-
return c.json({ error: err });
36+
console.error(err);
37+
return c.json({ error: err }, 500);
4038
})
4139

4240
.use(cors(corsOptions))
@@ -51,15 +49,7 @@ const app = new Hono()
5149
.route("/subjects", subjectsRoutes)
5250
.route("/requests", requestsRoutes)
5351
.route("/matches", matchesRoutes)
54-
.route("/chat", chatRoutes);
52+
.route("/chat", chatRoutes)
53+
.route("/sse", sseRoutes);
5554

56-
export function main() {
57-
const server = Bun.serve({
58-
fetch: app.fetch,
59-
port: process.env.PORT ?? 3000,
60-
});
61-
// ??
62-
initializeSocket(server as unknown as Server, corsOptions);
63-
return server;
64-
}
6555
export default app;

server/src/lib/socket/socket.ts

Lines changed: 0 additions & 76 deletions
This file was deleted.

server/src/main.ts

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)