Tôi đang phát triển trò chơi phiêu lưu dựa trên văn bản với Meteor và tôi đang gặp sự cố với cách xử lý các yếu tố nhất định. Cụ thể là, cách phát ra dữ liệu từ Máy chủ đến Máy khách mà không có bất kỳ đầu vào nào từ Máy khách.Truyền dữ liệu từ Máy chủ đến Khách hàng bằng Meteor:
Ý tưởng là khi người chơi tham gia chiến đấu với quái vật, sát thương chiến đấu và cập nhật đối tượng Trình phát và Quái vật sẽ xảy ra trong vòng lặp trên máy chủ. Khi người chơi nhận sát thương, người chơi phải cập nhật giao diện người dùng của khách hàng. Là một cái gì đó như thế này có thể với Xuất bản/Đăng ký?
Tôi về cơ bản muốn một cái gì đó ngồi và lắng nghe các sự kiện từ máy chủ để cập nhật nhật ký chiến đấu cho phù hợp.
Trong pseudo-code, đây là một cái gì đó dọc theo dòng của những gì tôi đang tìm kiếm:
// Client Side:
Meteor.call("runCommand", "attack monster");
// Server Side
Meteor.methods({
runCommand: function(input) {
// Take input, run the loop to begin combat,
// whenever the user takes damage update the
// client UI and output a line saying how much
// damage the player just received and by who
}
});
Tôi hiểu rằng bạn có thể xuất bản một bộ sưu tập cho khách hàng, nhưng đó không phải là thực sự như cụ thể của một Tôi đang tìm kiếm, tôi không muốn xuất bản toàn bộ đối tượng Trình phát tới ứng dụng khách, tôi chỉ muốn yêu cầu khách hàng viết một dòng vào một hộp văn bản nói điều gì đó như "Bạn bị trúng 12 sát thương bởi một con quái vật! ".
Tôi đã hy vọng có một chức năng tương tự như SocketIO nơi tôi có thể, nếu tôi muốn, chỉ phát ra một sự kiện cho khách hàng nói với nó để cập nhật giao diện người dùng. Tôi nghĩ rằng tôi có thể sử dụng SocketIO cho điều này nếu tôi cần, nhưng mọi người dường như kiên quyết rằng một cái gì đó như thế này có thể làm được với Meteor hoàn toàn không có SocketIO, tôi chỉ không thực sự hiểu làm thế nào. Cách duy nhất tôi thấy trong kịch bản này là: viết tất cả các mặt logic của máy khách trò chơi mà cảm thấy như một ý tưởng tồi, viết tất cả các bản ghi chiến đấu vào bộ sưu tập có vẻ cực kỳ quá mức (nhưng có lẽ không phải?) hoặc sử dụng một số loại công cụ loại SocketIO để chỉ phát ra thông báo cho khách hàng để yêu cầu nó viết dòng mới vào hộp văn bản.
Tôi không nghĩ rằng văn bản cho một bộ sưu tập là quá mức ở tất cả , nhưng tôi không quá quen thuộc với nội thất của thiên thạch. Mặc dù vậy, sự hiểu biết của tôi là chỉ những khác biệt mới được đồng bộ hóa với khách hàng, vì vậy nếu bạn chỉ thêm hoặc cập nhật tài liệu trong bộ sưu tập thì đó là tất cả những gì sẽ được đồng bộ hóa. Vì các bộ sưu tập, theo hiểu biết tốt nhất của tôi, dữ liệu duy nhất đang được đồng bộ hóa giữa máy khách và máy chủ, tôi không nghĩ có các tùy chọn khác trong thiên thạch thích hợp (ngoài việc bỏ phiếu). –
[meteor-stream] (http: //arunoda.github.Gói io/meteor-stream /) không còn được duy trì, nhưng đó là một cách thực sự tốt để đạt được loại chức năng này, và vẫn hoạt động tốt. – richsilv
Tôi thực sự không thể có được các luồng sao băng để hoạt động. Tôi đã cài đặt nó bằng lệnh thiết bị đầu cuối được cung cấp của họ và sau đó sao chép và dán ví dụ vào mã của tôi. Tôi có thể thấy đối tượng đang được tạo nhưng phương thức "phát ra" và "bật" thực sự hoàn toàn không có phản hồi. Nó không bao giờ kích hoạt sự kiện "trên tin nhắn". – Kich867