- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我不是在寻找具体答案,只是一个想法或提示。我有以下问题:
Android 应用程序是 Web 服务的客户端。它有一个线程,通过 http 协议(protocol)发送事件(带有请求 ID 的 XML 形式),并且对于每个请求,服务器都会发送确认,表明他正确地理解了授予事件 ID 的消息 - 服务器是少数客户端的同步器。我也想使用 websocket 协议(protocol)通过 websocket 发送事件,但这有点棘手 - 而不是 http,我不希望得到每个请求的响应。此外,传入的 websocket 消息在其他线程中解析。主要机制有点杂乱,我不想从头开始编写所有内容。
我想让这个异步websocket机制假装是同步的。现在我的想法是 - 通过 websocket 发送事件后,我将不再等待例如 5 秒的响应,该响应将在其他线程中处理(它以 XML 形式出现),并且关于请求 ID,它会通知适当的暂停线程。我担心 Condition.await() 和 condition.signal 不是最好的主意,你觉得怎么样?
根据这个问题,我意识到我在项目这种机制方面存在问题。您是否有想法,我在哪里可以找到有关良好模式和技巧的信息,这些信息对现在有好处,可以避免不良方法?提前致谢!
1 Câu trả lời
websocket 和 HTTP 请求之间的唯一区别是消息传入时缺少 HTTP header 。在 websocket 中,您有一个心跳来保持连接处于 Activity 状态并允许全双工通信,然后您就拥有了纯有效负载。您的工作是找到将使用哪些消息 header 在服务器/客户端中正确路由请求。
因此,这并不能阻止您通过在接收后立即写入输出流来以请求/响应方式进行通信。我建议你看一下 RFC
https://www.rfc-editor.org/rfc/rfc6455
如果您更注重视觉效果,此幻灯片可以提供帮助:
http://www.slideshare.net/sergialmar/websockets-with-spring-4
或者,如果您想要一些更严肃的实现作为示例,请查看 spring 的文档:
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html
关于java - 假装同步的异步 websocket 机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22225008/
Tôi đang viết một phương thức Java với chữ ký sau. void Logger(Phương thức method, Object[] args); Nếu một phương thức (ví dụ ABC()) gọi phương thức Logger này, thì nó phải
Tôi mới làm quen với Java. Vấn đề của tôi là chương trình Java của tôi không tìm thấy tệp hình ảnh mà tôi đang cố gắng sử dụng làm JButton. (Hiện tại đoạn mã này không có tác dụng gì vì tôi chỉ muốn có được giao diện mong muốn của đoạn mã đầu tiên). Đây là mã lớp chính của tôi: packag
Được rồi, hôm nay tôi sẽ trả lời phỏng vấn và tôi đã viết mã Java trong nhiều năm. Trong cuộc phỏng vấn, anh ấy nói "Thu gom rác Java là một vấn đề khó khăn mà một số bạn của tôi đang cố gắng tìm ra. Còn bạn thì sao?". Cô ấy đang cố lừa dối tôi phải không? Hoặc toàn bộ cuộc sống của tôi
Bạn tôi đưa cho tôi một câu đố để giải. Nó diễn ra như thế này: Có 100 người. Mỗi người trong số họ, đến lượt mình, thực hiện những điều sau
Nếu tôi biên dịch một ứng dụng sử dụng mã Java 5 thành mã byte, thì các tệp .class kết quả có chạy được trên Java 1.4 không? Nếu cách sau có hiệu quả và tôi đang cố gắng sử dụng Java trong ứng dụng Java 1.4 của mình
Có một số câu hỏi về lý do tại sao Java không hỗ trợ các kiểu không dấu và một số câu hỏi về cách xử lý các kiểu không dấu. Tôi đã tìm kiếm và có vẻ như Scala cũng không hỗ trợ các kiểu dữ liệu không dấu. Các hạn chế là Java và S
Tôi chỉ muốn biết liệu bytecode được tạo trong một phiên bản Java có thể chạy trên các phiên bản Java khác không? Câu trả lời hay nhất Thông thường, bytecode có thể chạy trên các phiên bản Java mới hơn mà không cần sửa đổi. Nó sẽ không chạy trên các phiên bản cũ hơn trừ khi bạn sử dụng các tham số đặc biệt (
Tôi có một câu hỏi cơ bản về việc thực thi chương trình Java trong dấu nhắc lệnh. Trên một số máy, chúng ta cần chỉ định -cp. (đường dẫn lớp) thực thi chương trình java cùng lúc (test là tên tệp java và tệp .class tồn tại trong cùng một thư mục) jav
Tôi đã đọc StackOverflow một thời gian rồi và bây giờ tôi mới có đủ can đảm để đặt một câu hỏi. Tôi 20 tuổi và hiện đang theo học tại một trường đại học chuyên ngành CNTT ở quê nhà (Cluj-Napoca, Romania). Chỉ đủ để giới thiệu thôi :D. Về cơ bản, tôi có một ứng dụng kế toán.
Tôi có public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml);
Tôi đã triển khai một ngôn ngữ thông dịch đơn giản trong Java với kiểu dữ liệu động. Thật không may là tôi gặp phải vấn đề sau. Mã kiểm tra như sau: def main() { def ks = Map[[1, 2]].keySet()
Tiếp tục nhắc nhập một số từ 1 đến 10 - kết quả sẽ là thêm st, rd, th và nd vào số đó. Viết chương trình nhắc người dùng nhập bất kỳ số nguyên nào từ 1 đến 10, sau đó hiển thị số nguyên đó dưới dạng thứ tự có thêm hậu tố. công cộng
Tôi có DownloadFile.java này và nó tải xuống tệp như mong đợi: import java.io.*; import java.net.URL; public class DownloadFile {
Tôi muốn thêm độ trễ vào GUI. Tôi đặt 2 vòng lặp for rồi vẽ lại nhãn, nhưng 2 vòng lặp for này được thực thi lần lượt và nhãn được vẽ lại cho đến vòng lặp cuối cùng. Tôi có thể làm gì? đối với (int i = 0;
Tôi đang thực hiện một số thử nghiệm trên các mục danh sách của đối tượng Student, nhưng tôi thích tạo danh sách được mã hóa cứng trong đối tượng lớp Java và trích xuất dữ liệu từ đó thay vì kết nối với cơ sở dữ liệu và chọn các bản ghi trong tập kết quả. Tuy nhiên, đã lâu rồi tôi không làm điều này,
Tôi biết rằng việc tạo đối tượng được chia thành ba phần: khai báo khởi tạo khởi tạo classA{} classB mở rộng classA{} classA obj = new classB(1,1); để khởi tạo nó, bạn phải sử dụng
Tôi quan tâm đến việc xây dựng hệ thống theo dõi phương tiện sử dụng GPRS. Tuy nhiên, tôi có một số câu hỏi dành cho những người đã từng làm việc này: GPRS có phải là công nghệ tốt nhất không? Mọi người có biết vấn đề gì không? Tôi dự định sử dụng Java/Java EE - có công nghệ nào tốt hơn không? nếu như
Tôi có thể đảo ngược một mảng bằng phương pháp đệ quy, ví dụ: array = {1,2,3,4,5} array result = {5,4,3,2,1} nhưng kết quả của tôi vẫn là mảng đó, tôi không biết tại sao, vui lòng giúp tôi. lớp công khai Đệ quy {
Có cách chuẩn nào để thực hiện việc này không? Bao gồm mã nguồn Java - Mã kiểm thử - Tích hợp liên tục đơn vị chung Ant hoặc Maven (có thể kiểm soát hành trình) Triển khai công cụ kiểm soát phiên bản ClearCase lên máy chủ ứng dụng Cuối cùng, tôi hy vọng sẽ có một môi trường xây dựng và tích hợp tự động.
Tôi thậm chí còn không biết điều này có khả thi hay không, tôi thực sự nghi ngờ là có, nhưng nếu có thể, bạn có thể cho tôi biết cách thực hiện không? Tôi chỉ muốn biết cách in một số văn bản từ máy in. Bạn có ý tưởng nào không? Câu trả lời hay nhất Có những điều đơn giản hơn đang diễn ra ở đây. nhập javax.swin
Tôi là một lập trình viên xuất sắc, rất giỏi!