```ts copy filename="MixnetWASMClientExample.tsx" import React, { useEffect, useState } from 'react'; import { createNymMixnetClient, NymMixnetClient, Payload } from '@nymproject/sdk-full-fat'; import Box from '@mui/material/Box'; import CircularProgress from '@mui/material/CircularProgress'; import Paper from '@mui/material/Paper'; import Typography from '@mui/material/Typography'; import Stack from '@mui/material/Stack'; import TextField from '@mui/material/TextField'; import Button from '@mui/material/Button'; const nymApiUrl = 'https://validator.nymtech.net/api'; export const Traffic = () => { const [nym, setNym] = useState(); const [selfAddress, setSelfAddress] = useState(); const [recipient, setRecipient] = useState(); const [payload, setPayload] = useState(); const [receivedMessage, setReceivedMessage] = useState(); const init = async () => { const client = await createNymMixnetClient(); setNym(client); await client?.client.start({ clientId: crypto.randomUUID(), nymApiUrl, forceTls: true, // force WSS }); client?.events.subscribeToConnected((e) => { const { address } = e.args; setSelfAddress(address); }); client?.events.subscribeToLoaded((e) => { console.log('Client ready: ', e.args); }); client?.events.subscribeToTextMessageReceivedEvent((e) => { console.log(e.args.payload); setReceivedMessage(e.args.payload); }); }; const stop = async () => { await nym?.client.stop(); }; const send = () => nym.client.send({ payload, recipient }); useEffect(() => { init(); return () => { stop(); }; }, []); if (!nym || !selfAddress) { return ( ); } return ( My self address is: {selfAddress || 'loading'} Communication through the Mixnet setRecipient(e.target.value)} size="small" /> setPayload({ message: e.target.value, mimeType: 'text/plain' })} size="small" /> {receivedMessage && ( Message Received! {receivedMessage} )} ); }; ```