socket.on('welcome', async () => {
myDataChannel = myPeerConnection.createDataChannel('chat');
myDataChannel.addEventListener('message', (event) => console.log(event));
console.log('made data channel');
const offer = await myPeerConnection.createOffer();
myPeerConnection.setLocalDescription(offer);
console.log('b. sent the offer');
socket.emit('offer', offer, roomName);
});
socket.on('offer', async (offer) => {
myPeerConnection.addEventListener('datachannel', (event) => {
myDataChannel = event.channel;
myDataChannel.addEventListener('message', (event) => console.log(event));
});
console.log('1. received the offer');
myPeerConnection.setRemoteDescription(offer);
const answer = await myPeerConnection.createAnswer();
myPeerConnection.setLocalDescription(answer);
console.log('c. sent the answer');
socket.emit('answer', answer, roomName);
});
=> socket.io를 사용하지 않고 WebRTC의 data channel을 통해서 채팅을 구현할 수 있다.
https://developer.mozilla.org/ko/docs/Web/API/WebRTC_API/Using_data_channels