tsのが良かったかもしれん
NYSL(煮るなり焼くなり好きにしろライセンス)
tsのが良かったかもしれん
NYSL(煮るなり焼くなり好きにしろライセンス)
| const express = require('express'); | |
| const WebSocket = require('ws'); | |
| const app = express(); | |
| const wss = new WebSocket.Server({ noServer: true }); | |
| const server = app.listen(3000); | |
| server.on('upgrade', (request, socket, head) => { | |
| const auth = request.headers.authorization; | |
| if (!auth || !isValidBasicAuth(auth)) { | |
| socket.write('HTTP/1.1 401 Unauthorized\r\n\r\n'); | |
| socket.destroy(); | |
| return; | |
| } | |
| wss.handleUpgrade(request, socket, head, (ws) => { | |
| wss.emit('connection', ws, request); | |
| }); | |
| }); | |
| function isValidBasicAuth(auth) { | |
| const [scheme, credentials] = auth.split(' '); | |
| if (scheme !== 'Basic') return false; | |
| const [username, password] = Buffer.from(credentials, 'base64') | |
| .toString() | |
| .split(':'); | |
| return username === 'user' && password === 'password'; | |
| } |
| const WebSocket = require('ws'); | |
| const wss = new WebSocket.Server({ port: 3000 }); | |
| wss.on('connection', (ws) => { | |
| let isAuthenticated = false; | |
| ws.on('message', (message) => { | |
| if (!isAuthenticated) { | |
| try { | |
| const authMessage = JSON.parse(message); | |
| if (authMessage.type === 'auth' && | |
| authMessage.username === 'user' && | |
| authMessage.password === 'password') { | |
| isAuthenticated = true; | |
| ws.send(JSON.stringify({ type: 'auth', status: 'success' })); | |
| } else { | |
| ws.close(); | |
| } | |
| } catch (err) { | |
| ws.close(); | |
| } | |
| return; | |
| } | |
| // 認証後のメッセージ処理 | |
| if (isAuthenticated) { | |
| // 通常のメッセージ処理 | |
| } | |
| }); | |
| }); |
| const express = require('express'); | |
| const jwt = require('jsonwebtoken'); | |
| const WebSocket = require('ws'); | |
| const url = require('url'); | |
| const app = express(); | |
| const wss = new WebSocket.Server({ noServer: true }); | |
| const JWT_SECRET = 'your-secret-key'; | |
| const server = app.listen(3000); | |
| server.on('upgrade', (request, socket, head) => { | |
| const { query } = url.parse(request.url, true); | |
| const token = query.token; | |
| try { | |
| jwt.verify(token, JWT_SECRET); | |
| wss.handleUpgrade(request, socket, head, (ws) => { | |
| wss.emit('connection', ws, request); | |
| }); | |
| } catch (err) { | |
| socket.destroy(); | |
| } | |
| }); |