Caver-js에서 web socket으로 연결 후 caver.wallet.keyring.decrypt 수행 시 'Cannot read property 'wallet' of null' 에러가 발생합니다

안녕하세요?

제목에서 문의 드린 바와 같이, caver-js에서 web socket으로 연결 후 caver.wallet.keyring.decrypt 수행 시 ‘Cannot read property ‘wallet’ of null’ 에러가 발생합니다.

endpoint 설정은 아래와 같습니다.
WS_ENABLE=1 # if this is set, the following options will be used
WS_API=“klay,rpc,net,web3” # available apis: admin,debug,klay,miner,net,personal,rpc,txpool,web3
WS_ADDR=“0.0.0.0”
WS_PORT=8552
WS_ORIGINS="*"

caver object 생성은 아래와 같이 수행했습니다.
let caver = new Caver(ws://${process.env.PROVIDER_INFO});
(process.env.PROVIDER_INFO는 endpoint-IP:8552 로 설정했습니다.)

provider 설정 및 node-url을 http 로 바꾸면 정상적으로 동작됩니다. ws로 설정하면 위와 같이 에러가 나네요.

안녕하세요.
websocket provider 를 사용하실 때에는 const caver = new Caver(new Caver.providers.WebsocketProvider(websocketURL)) 이런식으로 별도로 websocket provider를 생성한 뒤에 Caver 생성자에 전달해야 합니다.

감사합니다.

답변 감사드립니다.
말씀주신 내용으로 수정하여 정상동작 함을 확인하였습니다.

혹시 caver-java에서 websocket으로 연결하려면 고려해야 할 사항이 있을까요?
Caver caver = new Caver(“ws://node-url:8552”);
로 하니 아래 서명하는 코드에서
caver.wallet.sign(keyring.getAddress(), smartContractDeploy);
다음과 같은 에러가 발생합니다.
Invalid response received: 405; Method Not Allowed
org.web3j.protocol.exceptions.ClientConnectionException: Invalid response received: 405; Method Not Allowed

안녕하세요.

WebSocketService webSocketService = new WebSocketService("ws://node-url:8552", false);
Caver caver = new Caver(webSocketService);
webSocketService.connect();

위 코드와 같이 Caver instance를 설정하신 뒤 사용해보시면 될 것 같습니다.

옙 확인했습니다.

정상동작 합니다.

답변 감사드립니다. (__)