[Tò mò + Hỏi] Real time của dạy nhau học dùng gì?

Chào mọi người, mình xem request thì thấy dạy nhau học cứ gửi lên 1 request + sau 25s thì dừng rồi gửi request mới, cứ như thế. Nếu mình click vào topic thì nó hủy luôn rồi lại gửi cái mới. Mình muốn biết thuật toán hay hướng làm. Cái request gửi lên bằng ajax hay gì? Sao nó chờ 25s mà vẫn báo về mã trạng thái 200. Cảm ơn mn đã đọc. :smiley:

DNH dùng long poll đó bạn. Cứ tìm hiểu vè nó là sẽ biết. Còn công dụng thì làm thông báo, cập nhật bài viết mới

1 Like

à mình có tìm qua long-poll, sao DNH lúc giữ request nó vẫn có status code 200 màu xanh nhỉ. AJAX mình gửi lên toàn màu xám, có kq nó mới xanh @@~

Bạn có thể đọc technical information ở thread này

4 Likes

cảm ơn bạn. cái diễn đàn giống y dạy nhau học O.o

Nó là cha đẻ của Discourse mà Discourse là mã nguồn mà DNH dùng.

1 Like

ra vậy, mình thấy DNH dùng ruby, không biết php khác gì không?

1 Like

2 ngôn ngữ tất nhiên là khác rồi, PHP mạnh về lĩnh vực khác còn ruby thì vững hơn ở mặt khác. Ở đây Ruby tốt về sự thời gian thực “real time” tương tác các bài viết và thành viên ở mức liên tục ~ nếu làm như vậy ở PHP thì không ổn và có thể không được.

1 Like

Cảm ơn bác ạ :slight_smile:

Có phải là do dùng kỹ thuật này nên khó làm app android hả a hay lý do khác nhể :smile:

Nhân tiện cho mình hỏi, đây là nội dung 1 post của dnh, làm thế nào để bóc tách dữ liệu đc? Chẳng thấy có cấu trúc gì cả?

    Host: daynhauhoc.com
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    DNT: 1
    Cookie: _t=7cb19664e6a34a7cdfba589aad7b09d4; _forum_session=TE5XeUl6R2lINmwrM21ySVgrL25UbFBDQWoySzFOR1lwSU1jZ253a3hWeWlSaHZ6SHpibnUyaFp1ekc4YzF5aUxvWVZrS0ZPMGhvZ1lEczhOWG1ncy83UnF4MHZMK0thRzNlSVNBZlVjSWZJdGU3eXdRcTd6eGhBcnUxcW1rVzB4cExMbTBwQTdjNW1zdTc2cFBlZTRqRHZ6eXgyNE9lTjBIQnhQZFQwY3VsaDZrSzJnNlZjdFRmUFNUN1c5SUFXdlU2N3BUVzNDbG5OVDZDdDBabXRtcmtVU0w0NDBWU0hzR01lMXkzbzBmTkhMWnBBWVdWQ3Q5TVEzZnNvdUxhZ1NPRWdIYVZqZHVjOElseUtMTDcvVHpDS0RLaytQYzVSTW1yTXVpS2dWRUh1Q1JXdVgzRG1XTTlnTTFYUkFDKzVyS24rTlg0SmRQQXVDSkJ2WWxVQ1UyRWZueXpEeEhJTGpTSVhHU2JsSk5OZTd1QTNtSnNjTTVkYUsyamx4bm0yLS01RXBPNm9QYVg3aWlLdUdVVlZmMTh3PT0%3D--20e75cfe26a8569da183cfa43cf97cab78d9d6b4
    Connection: keep-alive

Mỗi một request đều trỏ về mọt json và nó tự động chứ không nhận qua http request, ví dụ với topic này thì là

http://daynhauhoc.com/t/to-mo-hoi-real-time-cua-day-nhau-hoc-dung-gi/27396.json

mình không hiểu lắm :((

Đơn giản mà, nó gửi đến server, id_topic cần lấy là bao nhiêu và server tự chuyển đổi dữ liệu dựa trên json của id topic đó.

–> /t/id.json

cái này khi có request lên server mới tạo hay tạo sẵn bác?

mọi router của ruby on rails xử lý bạn ạ :stuck_out_tongue: bạn có thể ở bất kỳ url nào và thêm .json sẽ ra dữ liệu json kể cả user ví dụ: http://daynhauhoc.com/users/dqh.json

1 Like

chắc là request thì nó mới tạo.

1 Like

:no_mouth::no_mouth::no_mouth::no_mouth::no_mouth::no_mouth::no_mouth:

bạn có thể tham khảo quá trình xử lý của nó tại đây: https://github.com/discourse/discourse

Discourse là một Open Source nên yên tâm tha hồ nghiên cứu về nó nhưng phài có kiến thức nhất định về Ruby và đặc biệt là Ruby On Rails

1 Like

mình vẫn thắc mắc: nếu mình post một bài thì server sẽ update json và các máy khác sẽ nhận đc một json mới từ server, vậy json mới này là toàn bộ trang web hay chỉ là nội dung bài viết (mới) của mình thôi.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?