Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F120834515
socket.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None
socket.js
View Options
'use strict'
import
io
from
"socket.io-client"
import
Config
from
'./config.js'
function
Socket
(
url
,
options
)
{
let
eventHandlers
=
{}
const
socket
=
io
(
url
,
{
path
:
'/meetmedia/signaling/'
,
transports
:
[
'websocket'
]
})
socket
.
io
.
on
(
"reconnect_attempt"
,
()
=>
{
console
.
log
(
`WebSocket re-connect attempt`
)
});
socket
.
io
.
on
(
"reconnect_error"
,
()
=>
{
console
.
log
(
`WebSocket re-connect error`
)
});
socket
.
io
.
on
(
"reconnect"
,
()
=>
{
console
.
log
(
`WebSocket re-connect`
)
});
socket
.
io
.
on
(
'reconnect_failed'
,
()
=>
{
console
.
log
(
'WebSocket re-connect failed'
)
this
.
trigger
(
'reconnectFailed'
)
})
socket
.
on
(
'connect'
,
()
=>
{
console
.
log
(
'WebSocket connect: '
+
socket
.
id
)
})
socket
.
on
(
'connect_error'
,
()
=>
{
console
.
log
(
'WebSocket connect_error: '
+
socket
.
id
)
})
socket
.
on
(
'disconnect'
,
reason
=>
{
console
.
log
(
'WebSocket disconnect: '
+
reason
)
this
.
trigger
(
'disconnect'
,
reason
)
})
socket
.
on
(
'request'
,
async
(
request
,
cb
)
=>
{
console
.
log
(
'Recv: '
+
request
.
method
,
request
.
data
)
this
.
trigger
(
'request'
,
request
,
cb
)
})
socket
.
on
(
'notification'
,
async
notification
=>
{
console
.
log
(
'Recv: '
+
notification
.
method
,
notification
.
data
)
this
.
trigger
(
'notification'
,
notification
)
})
this
.
close
=
()
=>
{
socket
.
close
()
}
this
.
getRtpCapabilities
=
async
()
=>
{
return
await
this
.
sendRequest
(
'getRouterRtpCapabilities'
)
}
/**
* Register event handlers
*/
this
.
on
=
(
eventName
,
callback
)
=>
{
eventHandlers
[
eventName
]
=
callback
}
/**
* Execute an event handler
*/
this
.
trigger
=
(...
args
)
=>
{
const
eventName
=
args
.
shift
()
if
(
eventName
in
eventHandlers
)
{
eventHandlers
[
eventName
].
apply
(
null
,
args
)
}
}
this
.
sendRequest
=
(
method
,
data
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
console
.
log
(
'Send: '
+
method
,
data
)
socket
.
emit
(
'request'
,
{
method
,
data
},
withTimeout
((
error
,
response
)
=>
{
if
(
error
)
{
console
.
error
(
'Error on: '
+
method
,
error
)
reject
(
error
)
}
else
{
console
.
log
(
'Recv: '
+
method
,
response
)
resolve
(
response
)
}
})
)
})
}
const
withTimeout
=
(
callback
)
=>
{
let
called
=
false
const
timer
=
setTimeout
(
()
=>
{
if
(
called
)
return
called
=
true
callback
(
new
Error
(
'Request timed out'
))
},
Config
.
requestTimeout
)
return
(...
args
)
=>
{
if
(
called
)
return
called
=
true
clearTimeout
(
timer
)
callback
(...
args
)
}
}
}
export
{
Socket
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 24, 1:04 PM (1 w, 15 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18870220
Default Alt Text
socket.js (2 KB)
Attached To
Mode
rK kolab
Attached
Detach File
Event Timeline