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

36 lines
991 B

5 years ago
import { Socket } from 'phoenix'
import { locale } from './locale'
5 years ago
let websocketRootUrl = process.env.SOCKET_ROOT;
if (!websocketRootUrl || websocketRootUrl == '/') {
websocketRootUrl = ''
}
const socket = new Socket(websocketRootUrl + '/socket', { params: { locale: 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) {
const channel = socket.channels.find(channel => channel.topic === topic)
if (channel) {
return channel
} else {
const channel = socket.channel(topic, {})
channel.join()
return channel
}
}