summaryrefslogtreecommitdiff
path: root/ws/mod.ts
diff options
context:
space:
mode:
Diffstat (limited to 'ws/mod.ts')
-rw-r--r--ws/mod.ts48
1 files changed, 25 insertions, 23 deletions
diff --git a/ws/mod.ts b/ws/mod.ts
index 47c6271e0..348f5df12 100644
--- a/ws/mod.ts
+++ b/ws/mod.ts
@@ -5,12 +5,14 @@ import { BufReader, BufWriter } from "../io/bufio.ts";
import { readLong, readShort, sliceLongToBytes } from "../io/ioutil.ts";
import { Sha1 } from "./sha1.ts";
-export const OpCodeContinue = 0x0;
-export const OpCodeTextFrame = 0x1;
-export const OpCodeBinaryFrame = 0x2;
-export const OpCodeClose = 0x8;
-export const OpcodePing = 0x9;
-export const OpcodePong = 0xa;
+export enum OpCode {
+ Continue = 0x0,
+ TextFrame = 0x1,
+ BinaryFrame = 0x2,
+ Close = 0x8,
+ Ping = 0x9,
+ Pong = 0xa
+}
export type WebSocketEvent =
| string
@@ -77,9 +79,9 @@ class WebSocketImpl implements WebSocket {
for await (const frame of receiveFrame(this.conn)) {
unmask(frame.payload, frame.mask);
switch (frame.opcode) {
- case OpCodeTextFrame:
- case OpCodeBinaryFrame:
- case OpCodeContinue:
+ case OpCode.TextFrame:
+ case OpCode.BinaryFrame:
+ case OpCode.Continue:
frames.push(frame);
payloadsLength += frame.payload.length;
if (frame.isLastFrame) {
@@ -89,7 +91,7 @@ class WebSocketImpl implements WebSocket {
concat.set(frame.payload, offs);
offs += frame.payload.length;
}
- if (frames[0].opcode === OpCodeTextFrame) {
+ if (frames[0].opcode === OpCode.TextFrame) {
// text
yield new Buffer(concat).toString();
} else {
@@ -100,7 +102,7 @@ class WebSocketImpl implements WebSocket {
payloadsLength = 0;
}
break;
- case OpCodeClose:
+ case OpCode.Close:
const code = (frame.payload[0] << 16) | frame.payload[1];
const reason = new Buffer(
frame.payload.subarray(2, frame.payload.length)
@@ -108,10 +110,10 @@ class WebSocketImpl implements WebSocket {
this._isClosed = true;
yield { code, reason };
return;
- case OpcodePing:
+ case OpCode.Ping:
yield ["ping", frame.payload] as WebSocketPingEvent;
break;
- case OpcodePong:
+ case OpCode.Pong:
yield ["pong", frame.payload] as WebSocketPongEvent;
break;
}
@@ -123,7 +125,7 @@ class WebSocketImpl implements WebSocket {
throw new SocketClosedError("socket has been closed");
}
const opcode =
- typeof data === "string" ? OpCodeTextFrame : OpCodeBinaryFrame;
+ typeof data === "string" ? OpCode.TextFrame : OpCode.BinaryFrame;
const payload = typeof data === "string" ? this.encoder.encode(data) : data;
const isLastFrame = true;
await writeFrame(
@@ -142,7 +144,7 @@ class WebSocketImpl implements WebSocket {
await writeFrame(
{
isLastFrame: true,
- opcode: OpCodeClose,
+ opcode: OpCode.Close,
mask: this.mask,
payload
},
@@ -170,7 +172,7 @@ class WebSocketImpl implements WebSocket {
await writeFrame(
{
isLastFrame: true,
- opcode: OpCodeClose,
+ opcode: OpCode.Close,
mask: this.mask,
payload
},
@@ -205,12 +207,12 @@ export async function* receiveFrame(
const frame = await readFrame(reader);
const { opcode, payload } = frame;
switch (opcode) {
- case OpCodeTextFrame:
- case OpCodeBinaryFrame:
- case OpCodeContinue:
+ case OpCode.TextFrame:
+ case OpCode.BinaryFrame:
+ case OpCode.Continue:
yield frame;
break;
- case OpCodeClose:
+ case OpCode.Close:
await writeFrame(
{
opcode,
@@ -223,18 +225,18 @@ export async function* receiveFrame(
yield frame;
receiving = false;
break;
- case OpcodePing:
+ case OpCode.Ping:
await writeFrame(
{
payload,
isLastFrame,
- opcode: OpcodePong
+ opcode: OpCode.Pong
},
conn
);
yield frame;
break;
- case OpcodePong:
+ case OpCode.Pong:
yield frame;
break;
}