Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F5374610
websocket.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
websocket.js
View Options
import
{
test
,
summary
}
from
'./helpers.js'
;
import
{
spawn
}
from
'child_process'
;
console
.
log
(
'WebSocket Tests\n'
);
const
port
=
32187
;
const
serverPath
=
new
URL
(
'./fixtures/websocket_server.mjs'
,
import
.
meta
.
url
).
pathname
;
function
sleep
(
ms
)
{
return
new
Promise
(
resolve
=>
setTimeout
(
resolve
,
ms
));
}
function
startServer
(
path
)
{
const
child
=
spawn
(
process
.
execPath
,
[
path
,
String
(
port
)]);
child
.
on
(
'stderr'
,
data
=>
{
if
(
String
(
data
).
trim
())
console
.
log
(
String
(
data
).
trim
());
});
return
child
;
}
test
(
'WebSocket global exists'
,
typeof
WebSocket
,
'function'
);
test
(
'WebSocket CONNECTING constant'
,
WebSocket
.
CONNECTING
,
0
);
test
(
'WebSocket OPEN constant'
,
WebSocket
.
OPEN
,
1
);
test
(
'MessageEvent global exists'
,
typeof
MessageEvent
,
'function'
);
test
(
'CloseEvent global exists'
,
typeof
CloseEvent
,
'function'
);
const
server
=
startServer
(
serverPath
);
await
sleep
(
150
);
const
result
=
await
new
Promise
(
resolve
=>
{
const
seen
=
[];
const
socket
=
new
WebSocket
(
`ws://127.0.0.1:
${
port
}
/ws`
);
socket
.
binaryType
=
'arraybuffer'
;
socket
.
onopen
=
()
=>
{
seen
.
push
(
'open'
);
socket
.
send
(
'hello'
);
};
socket
.
addEventListener
(
'message'
,
event
=>
{
seen
.
push
(
event
.
data
);
if
(
event
.
data
===
'string:hello'
)
socket
.
send
(
'close'
);
});
socket
.
onclose
=
event
=>
{
resolve
({
seen
,
code
:
event
.
code
,
reason
:
event
.
reason
,
readyState
:
socket
.
readyState
});
};
socket
.
onerror
=
()
=>
{
resolve
({
seen
,
code
:
-
1
,
reason
:
'error'
,
readyState
:
socket
.
readyState
});
};
});
server
.
kill
(
'SIGTERM'
);
test
(
'WebSocket opened'
,
result
.
seen
.
includes
(
'open'
),
true
);
test
(
'WebSocket text send preserves opcode'
,
result
.
seen
.
includes
(
'string:hello'
),
true
);
test
(
'WebSocket close code'
,
result
.
code
,
1000
);
test
(
'WebSocket closed state'
,
result
.
readyState
,
WebSocket
.
CLOSED
);
summary
();
File Metadata
Details
Attached
Mime Type
application/javascript
Expires
Sun, May 17, 9:12 AM (2 d)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
554681
Default Alt Text
websocket.js (1 KB)
Attached To
Mode
rANT Ant
Attached
Detach File
Event Timeline
Log In to Comment