Blockchain explorer for Ethereum based network and a tool for inspecting and analyzing EVM based blockchains.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
blockscout/apps/block_scout_web/assets/js/socket.js

40 lines
1.1 KiB

import { Socket } from 'phoenix'
import { locale } from './locale'
// @ts-ignore
let websocketRootUrl = process.env.SOCKET_ROOT
if (!websocketRootUrl) {
websocketRootUrl = ''
}
if (websocketRootUrl.endsWith('/')) {
websocketRootUrl = websocketRootUrl.slice(0, -1)
}
const socket = new Socket(websocketRootUrl + '/socket', { params: { locale } })
socket.connect()
export default socket
/**
* Subscribes the client in the channel given the topic.
*
* This function will check if already exist a channel before creating one. This is useful because
* when the client is attempting to create a duplicated subscription, the server will close the
* existing subscription and create a new one.
*
* See more about it in https://hexdocs.pm/phoenix/js/#phoenix.
*
* Returns a Channel instance.
*/
export function subscribeChannel (topic) {
// @ts-ignore
const channel = socket.channels.find(channel => channel.topic === topic)
if (channel) {
return channel
} else {
const channel = socket.channel(topic, {})
channel.join()
return channel
}
}