Commit df64306d authored by Chunchi Che's avatar Chunchi Che

update JoinHome.tsx

parent 88001a09
import React, { useState, useEffect } from "react"; import React, { useState, useEffect, ChangeEvent, useRef } from "react";
import { ygopro } from "./api/ocgcore";
export default function JoinHome(props: { addr: string }) { export default function JoinHome(props: { addr: string }) {
const [isConnected, setConnected] = useState(false); const ws = useRef<WebSocket | null>(null);
const [message, setMessage] = useState(""); const [username, setUsername] = useState("");
const [passwd, setPasswd] = useState("");
const [isJoined, setJoined] = useState(false);
useEffect(() => { useEffect(() => {
const ws = new WebSocket(props.addr); ws.current = new WebSocket(props.addr);
ws.onopen = () => { ws.current.onopen = () => {
console.log("websocket open"); console.log("websocket open");
setConnected(true);
}; };
ws.onclose = () => { ws.current.onclose = () => {
console.log("websocket closed"); console.log("websocket closed");
setConnected(false);
}; };
ws.onmessage = (e) => { ws.current.onmessage = (e) => {
const msg = e.data; console.log("websocket read message: " + e.data);
setMessage(msg);
}; };
return () => ws.close(); const wsCurrent = ws.current;
return () => wsCurrent.close();
}, []); }, []);
let handleUsernameChange = (event: ChangeEvent<HTMLInputElement>) => {
setUsername(event.target.value);
};
let handlePasswdChange = (event: ChangeEvent<HTMLInputElement>) => {
setPasswd(event.target.value);
};
let handleButtonOnClick = () => {
console.log("buttom clicked");
if (!ws.current) {
console.error("websocket not connected");
} else {
const wsCurrent = ws.current;
// todo
}
};
return ( return (
<div> <div>
<p>{"isConnected: " + isConnected}</p> <p>
<p>{"message: " + message}</p> <input
type="text"
title="username"
value={username}
onChange={handleUsernameChange}
></input>
</p>
<p>
<input
type="text"
title="passwd"
value={passwd}
onChange={handlePasswdChange}
></input>
</p>
<button onClick={handleButtonOnClick}>Join</button>
<p>{"isJoined: " + isJoined}</p>
</div> </div>
); );
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment