laravel react websocket - part 2



Xin chào bạn

Bạn đã setup hết cho server trong part 1 ở bài viết Laravel react websocket này chưa, nếu chưa thì quay lại nhé

Hôm nay, mình xin chia sẻ đến bạn phần client, ở đây mình sẽ sử dụng react js để làm ví dụ.

Đầu tiên, mình sẽ tạo một project tên là ' client-app'

npx create-react-app client-app

Cài đặt một số thư viện liên quan:

cd client-app
npm i pusher-js laravel-echo

Tại file App.js

import React from 'react';
import Chat from "./Chat";

function App () {
return (
<div className="App">
<Chat/>
</div>
);
}

export default App;

Tại folder src tạo một component tên là 'Chat.js'

import React, {useEffect} from 'react';
import Echo from 'laravel-echo';

window.Pusher = require('pusher-js');

const Chat = () => {
useEffect(() => {
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'khaitk',
wsHost: window.location.hostname,
wsPort: 6001,
forceTLS: false,
disableStats: true,
cluster : "mt1"
});

window.Echo.channel('chat-listen').subscribed(() => {
console.log('subscribe');
}).listen('ChatEvents', (e) => {
console.log(e);
})
}, []);
async function handleSendMessage(e) {
const data = {
"id": "1",
"channel_id": 1678337641615,
"message" : 'Hey girl'
}
e.preventDefault();
const socket = new WebSocket(`ws://localhost:6001/app/khaitk/chat`)
socket.onopen = (e) => {
socket.send(JSON.stringify({
...data
}))
console.log('open');
}
}

return (
<div>
<button onClick={(e) => handleSendMessage(e)}>Send</button>
</div>
);
}

export default Chat;

Thế là phía client đã setup xong, bắt đầu test kết quả thôi nào.

Let's go.....! Run lệnh : npm start

Khi màn hình đã hiển thị lên ấn phím f12 và click button Send để check kết quả dưới console nhé...

Yeah..... Thế là có chút gì đó realtime rùi phải không nào.

Hãy lên ý tưởng code một ứng dụng realtime sử dụng Laravel vs React để phát triển thôi.

Good luck....!

Lưu ýNếu có lỗi gì hãy cmt ở bài viết này.

Previous Post Next Post