2010-03-10 29 views
9

Tôi cần một máy chủ để gửi và nhận tin nhắn XMPP từ các khách hàng Android đang chạy một trò chơi nhiều người tôi đang viết. Tôi đã chọn XMPP vì tôi không muốn thăm dò ý kiến ​​lâu dài và Ổ cắm có thể là vấn đề trên mạng di động (Các nhà cung cấp dịch vụ có thể chặn họ).Máy chủ XMPP siêu đơn giản hoặc lời khuyên cho một thành phần Openfire tùy chỉnh đơn giản

Tôi đã xem OpenFire trong khi nghe có vẻ tuyệt vời, tôi không cần bảng điều khiển trò chuyện thoại, Phòng trò chuyện, v.v. có vẻ rất nặng và hướng tới giải pháp trò chuyện cho doanh nghiệp khi tôi cần và chuyển động của họ đến mỗi điểm ghi âm khác ở cuối. Có một phiên bản rút gọn của OpenFire vì vậy tôi chỉ có thể đăng ký một thành phần mà sẽ phục vụ tất cả các yêu cầu? Về thích nghi với openfire tôi không thể tìm thấy một ví dụ rõ ràng về việc thêm một thành phần tùy chỉnh để thực hiện một nhiệm vụ tương tự.

Điều tôi cần là thư viện hoặc máy chủ đơn giản hiện có mà tôi có thể chạy và đăng ký trình xử lý tin nhắn tùy chỉnh của mình. Tôi chỉ cần có thể phục vụ mọi yêu cầu đến và trả lời một cách thích hợp. Tôi hy vọng rằng tôi không phải viết quản lý thread vì vấn đề đó là phổ biến cho một máy chủ trò chuyện điển hình nhưng tôi cần phải viết mã để giải thích và trả lời các tin nhắn được gửi đi.

Tôi hy vọng điều này có ý nghĩa, bất kỳ ai đã viết một đoạn mã máy chủ như vậy tôi sẽ thích một ví dụ. Đối với những người bạn chưa thử nó nhưng có một ý tưởng làm thế nào bạn sẽ bắt đầu xin vui lòng chip trong quá! Càng chi tiết càng tốt.

Cảm ơn trước,

Gav

+0

Máy chủ phải là chỉ java? Bạn đã dùng AMQP trong tài khoản? – clyfe

Trả lời

7

Bạn có thể sử dụng hầu hết mọi máy chủ XMPP; Tôi biết rằng Openfire sẽ hoạt động hoặc gần đây tôi đã sử dụng Prosody, rất nhẹ và dễ cài đặt (trên Linux).

Điều bạn muốn là một thành phần độc lập giao tiếp với máy chủ XMPP của bạn (và do đó có thể tiếp cận người dùng của bạn) bằng cách sử dụng XMPP component protocol. Đó là nơi trí thông minh của game.

Xem câu trả lời trước của tôi cho một câu hỏi rất giống nhau để xem chi tiết hơn:
XMPP C# Interaction

Một nơi tuyệt vời để tìm kiếm thông tin được bất cứ điều gì được viết bởi Jack Moffitt, người đã tạo ra chesspark.com (kể từ khi mua chess.com nên không có sẵn) — một trang web phù hợp với người chơi cờ vua và trò chơi được kiểm soát bằng XMPP.

Xem bài blog này như một sự khởi đầu:
http://metajack.im/2008/11/21/chesspark_design_details_part_1_why_xmpp/

1

Bạn sẽ có thể thực hiện điều này với Openfire (hoặc máy chủ XMPP khác) ra khỏi hộp nếu họ hỗ trợ pubsub. Không chắc chắn về các chi tiết cụ thể về nhu cầu của bạn, nhưng tôi nghĩ rằng Personal Eventing Protocol hoặc superset PubSub sẽ có thể xử lý trường hợp sử dụng của bạn. OpenFire hỗ trợ cả hai giao thức này.

Nếu những điều này không hỗ trợ trường hợp sử dụng của bạn, thì custom plugin thật dễ viết.

Đối với hạng nặng hoặc nhẹ, trừ khi bạn có một số môi trường nhỏ đặc biệt để chạy máy chủ, tôi nghi ngờ nó sẽ quan trọng. Bạn chỉ đơn giản là sẽ không sử dụng nhiều tính năng tồn tại.

Tôi đã sử dụng XMPP pubsub cho khách hàng để giao tiếp hành động với nhau để người dùng có thể nhận được cập nhật trực tiếp về những gì đồng nghiệp trong một nhóm đang làm việc.

+0

Vì vậy, chỉ cần chạy một máy chủ OpenFire ra khỏi hộp và trên cùng một máy chạy máy chủ trò chơi của khách hàng @ 'và có các cầu thủ gửi tin nhắn trò chơi cho khách hàng đó? Điều đó có thể hiệu quả, đó là ý của bạn? Tôi cần một số thông tin tập trung, nó không chỉ là một trường hợp truyền thông điệp từ khách hàng đến máy khách. Ví dụ, bảng trò chơi là ngẫu nhiên và tôi phải ghép nối các cầu thủ bằng cách nào đó. – gav

+0

Không. Tôi không biết ý bạn là gì khi chạy một máy khách trên cùng một máy để gửi tin nhắn đến. Tôi giả định trò chơi là khách hàng. – Robin

+0

@Robin - Những gì ông có nghĩa là một khách hàng XMPP có thể nghe tin nhắn Openfire. –

4

Nếu bạn muốn có một nhanh, máy chủ XMPP nhẹ, hãy thử Prosody. Các câu trả lời khác là đúng, tuy nhiên, trong đó bạn sẽ muốn xem xét PubSub trước, sau đó viết component của riêng bạn, trước khi thêm chức năng trực tiếp vào máy chủ.

Các vấn đề liên quan