Avatar
2
Điệp Trần Beginner
Điệp Trần Beginner
So sánh giữa websocket vs long polling
Trong một cuộc trang luận với đồng nghiệp của mình, có 2 luồng ý kiến: <ul> <li>websocket /long polling là 1, chỉ là 1 cái của p.tây, 1 cái của các pháp sư trung hoa.</li> <li>websocket với long polling là 2 giao thức có cơ chế hoàn toàn khác nhau</li></ul> <p> Mình tạo câu hỏi này muốn ý kiến của mọi người xem cái nào là đúng </p> <p> Có 1 câu hỏi nữa là giữa websocket, long polling, sses thì cái nào tốn ít tài nguyên của server hơn </p>
Answer
Avatar
0
PhuongPyke Beginner
PhuongPyke Beginner
Bảo mật giữa client và server
Hi ae, <p> AE cho mình tham khảo chút về việc bảo mật giữa client và server game . </p> <p> Ở đây client của mình là web Nuxtjs và server game là nakama </p> <p> Khi mình đăng kí trên server game 1 RPC để cho client gọi vào . thì việc truyền payload giữa client lên server đang được public . </p> <p> Mình đang muốn tham khảo 1 số các cách để chống bị Cross-site request forgery (Giả mạo yêu cầu liên trang) </p> <p> Mục địch ngăn chặn các yêu cầu giả mạo để nhập thông tin về điểm số, tiền... của game </p> <h1>Request từ client :</h1> <img src="/api/v1/media/ed33a5fc669736bcf0fa3e27fccef6cd689b85c2a3ac95229907d06ea673af64.png" alt="nakama3.PNG"> <h1>Server game register RPC</h1> <img src="/api/v1/media/dcd4dee03ea7910b052e418c2c99e245ba2b1ee9a1d2d6af7e376d83cf28cce5.png" alt="nakama1.PNG"> <img src="/api/v1/media/dcd4dee03ea7910b052e418c2c99e245ba2b1ee9a1d2d6af7e376d83cf28cce5.png" alt="nakama1.PNG">
Answer
Avatar
0
kidsoul Beginner
kidsoul Beginner
Client không nhận được message từ socket server nếu server chủ động gửi message
Mình đang phát triển tính năng chat giữa các devices trên Flutter gặp một lỗi như sau, google vẫn chưa ra hoặc chưa đúng keyword; không biết anh/chị/bạn nào từng gặp phải thì gợi ý cho mình với ạ. Xin cảm ơn mọi người!!! <ul> <li>Tại server, mình dùng shelf để tạo websocket, xử lý các request từ client:</li></ul> <div class="markdown-block position-relative overflow-auto"> <pre> <span class="pl-k">final</span> routerHandler = shelf_router.Router() ..get(<span class="pl-s">'/message'</span>, (request) =&gt; handleWs(request)); Cascade cascade = Cascade() .add(routerHandler) <span class="pl-k">var</span> handler = <span class="pl-k">const</span> Pipeline().addHandler(cascade.handler); <span class="pl-k">await</span> shelf_io.serve(handler, ipAddress, port) </pre> </div><div class="markdown-block position-relative overflow-auto"> <pre> FutureOr&lt;Response&gt; handleWs(Request request) { <span class="pl-k">final</span> channels = &lt;WebSocketChannel&gt;[]; <span class="pl-k">return</span> ws.webSocketHandler((WebSocketChannel channel) { channels.add(channel); channel.stream.listen((message) { <span class="pl-k">try</span> { <span class="pl-k">final</span> receivedMessage = Message.fromJson(json.decode(message)); <span class="pl-k">final</span> updatedMessage = receivedMessage.copyWith(messageState: MessageState.sent); <span class="pl-k">final</span> response = json.encode(updatedMessage.toJson()); <span class="pl-k">for</span> (final c <span class="pl-k">in</span> channels) { c.sink.add(response); } } <span class="pl-k">catch</span> (e) { debugPrint(<span class="pl-s">'Error while handling incoming message in socket: ${e.toString()}'</span>); } }, onDone: () =&gt; channels.remove(channel) ); })(request); } </pre> </div> <ul> <li>Tại client sẽ kết nối, lắng nghe websocket (UI/Logic tại page client dùng chung cho cả server) (x)</li></ul> <div class="markdown-block position-relative overflow-auto"> <pre> <span class="pl-s">@override</span> <span class="pl-k">void</span> initState() { super.initState(); _handleSocket(); } <span class="pl-k">void</span> _handleSocket() { _webSocketChannel = WebSocketChannel.connect(Uri.parse(endpoint)); _webSocketChannel.stream.listen((response) { print(<span class="pl-s">'response from ws: $response'</span>); }); } </pre> </div><p> Gửi message lên websocket: </p> <div class="markdown-block position-relative overflow-auto"> <pre> <span class="pl-k">void</span> _sendMessage() <span class="pl-k">async</span> { <span class="pl-k">final</span> <span class="pl-k">data</span> = json.encode(message.toJson()); _webSocketChannel.sink.add(data); } </pre> </div><p> Kịch bản: </p> <ol start="1"> <li>Khi client gửi message, server có thể nhận được message và response lại client (đang hoạt động tốt)</li> <li>Khi server gửi message, dùng chung UI/logic như client (x), thì socket server có nhận được message nhưng client lại không nhận được response như kịch bản (1)</li> </ol> <p> Không biết mô hình này có hoạt động được hay không hay do lỗi triển khai, mong các bạn giải đáp giúp mình. </p>
Answer
Avatar
0
triandn Beginner
triandn Beginner
Deploy websocket lên server ubuntu
Chào anh Dũng, lại là em đây.<p> Sau khi test được socket dưới local thì em có deploy lên ubuntu server. Nhưng khi em test lại thì nó bị lỗi như trong ảnh. Em có thử đổi port khác nhau nhưng vẫn không được. </p> <p> Đây là ảnh em config host và port, em sử dụng netty socket: </p> <img src="/api/v1/media/1268bfa443afdac0622bd8fbc5462dab763946ebbad28f6cbf93991bf4c00889.png" alt="z4415641026376_d341b6ae2134042f7e8194a78b1fc3c4.jpg"> <p> Đây là lỗi trên postman </p> <img src="/api/v1/media/fe33f543f327552653f76b418882996c2633d0ef42558a86584c34ca77cf4d65.jpg" alt="z4415630979611_c07a88711a0aa2a67129fc2f62f5ad04.jpg"> <p> Anh Dũng giúp em hướng giải quyết vấn đề này với ạ </p>
Answer
Avatar
0
triandn Beginner
triandn Beginner
Websocket
Chào anh, em có config websocket theo hướng dẫn anh gửi ở câu hỏi trước: <p> Đây là code config websocket: </p> <img src="/api/v1/media/a7abf96c9f5c4fbb6e5ce5e9bd83b31d7e102f494b655a2eaa05ce25e1a17db5.jpg" alt="socket.jpg"> <p> Đây là lỗi khi em connect từ postman, em có thử đổi port nhưng vẫn không connect được: </p> <img src="/api/v1/media/fb9aab0051b07cfdd7df1032263caedc3156d4d14f707627cdc26536f826ed08.jpg" alt="postman_test_socket.jpg"> <p> Anh Dũng cho em hỏi trường hợp này thì mình nên sửa đổi như thế nào ạ! </p>
Answer
Avatar
0
triandn Beginner
triandn Beginner
Chat Room Realtime
Chào mọi người, hiện tại em đang muốn làm chat realtime sử dụng java spring boot và lưu trữ nội dung tin nhắn ở DB <p> Mọi người có thể cho em xin 1 vài nguồn tham khảo, có project github thì càng tốt ạ Em cảm ơn! </p>
Answer
Avatar
1
tvd12 Enlightened
tvd12 Enlightened
Tại sao cần hạn chế sử dụng đến socket?
Tại sao cần hạn chế sử dụng đến socket?
Answer
Avatar
0
Nguyễn Thái Sơn Professional
Nguyễn Thái Sơn Professional
có nên chuyển từ HTTP -&gt; Socket
Anh ơi, mình có nên chuyển toàn bộ HTTP sang Socket để tăng performance không ạ, em thấy HTTP nó tận layer 7 nên chậm chạm hơn Socket ạ <p> </p> <p> Ví dụ: Em thấy toàn bộ hệ thống em đã optimize SQL ổn định, vậy thì có nên convert hết toàn bộ Restful API thành gRPC không ạ </p>
Answer
Avatar
0
Nguyễn Hữu Cường Beginner
Chat thời gian thực
Em đang muốn xây dựng app chat thời gian thực. Backend Spring Boot, frontend Android (Java). Kiến thức lập trình mạng của em học ở trường chỉ có UDP, TCP/IP, RMI. Khi kết nối, tất cả các máy đều nhận được message. Vậy là không phải bạn bè vẫn nhận được message à. Làm cách nào để message của ai thì người đấy mới nhận được thôi. Mong được giải ngố, em dùng Java ạ
Answer
Avatar
0
Nguyễn Thái Sơn Professional
Nguyễn Thái Sơn Professional
Websocket, Socket, Long Pooling, server event
Anh ơi anh có thể chia sẻ sự khác biệt Websocket, Socket, Long Pooling, server event.... được không ạ, giữa Websocket và Socket em hay bị nhầm, em đọc nhiều bài viết rồi nhưng không biết khi nào dùng Websocket, khi nào dùng Socket. Vì sao ứng dụng chat cần dùng socket mà không dùng websocket
Answer
Avatar
0
Nguyễn Thái Sơn Professional
Nguyễn Thái Sơn Professional
Nonblocking IO với socket
Anh Dũng ơi, em tưởng rằng Nonblocking IO chỉ xảy ra với đọc ghi file, database hoặc lấy dữ liệu từ service khác. Vậy mục đích của Nonblocking IO với socket có khác biệt với việc sử dụng blocking IO với socket thông thường k ạ. <p> </p> <a href="https://viblo.asia/p/blocking-io-va-non-blocking-io-client-server-socket-1VgZvX415Aw" target="_blank">https://viblo.asia/p/blocking-io-va-non-blocking-io-client-server-socket-1VgZvX415Aw</a>
Answer
Avatar
0
tvd12 Enlightened
tvd12 Enlightened
Có nên dùng socket cho chức năng tracking location giống grab?
Ứng dụng của em hiện tại có khoảng 100k người dùng, và có chức năng tracking location như của grab, vậy có nên dùng socket không anh nhỉ? <p> </p> <p> Http em sợ server k chịu tải được anh, vì cứ 5s là gửi request lên server 1 lần để update location </p>
Answer