关于 java socket的消息推送问题

是这样,后台管理员添加了一条社区消息,需要推送的用户的安卓客户端,然后我在做socket的时候是手机端链接服务端的时候开了一个线程保持了链接,假如现在有很多手机端开了线程... 是这样,后台管理员添加了一条社区消息,需要推送的用户的安卓客户端,然后我在做socket的时候是手机端链接服务端的时候开了一个线程保持了链接,假如现在有很多手机端开了线程,我怎么操作这些线程在后台管理员添加消息的时候去推送消息呢 展开
 我来答
极光开发者服务
2021-07-20 · 超过370用户采纳过TA的回答
知道小有建树答主
回答量:549
采纳率:0%
帮助的人:137万
展开全部
关于 java socket的消息推送问题,首先:开启服务端,并暴露出端口。然后通过一个while的死循环去不停的接收来自客户端的socket,并且通过一个ArrayList来维护。并且通过子线程去对list中的socket进行操作。
其次:客户端去访问服务器的端口。开启一个子线程去不停的接收来自服务端的消息。
然而关于推送服务的更多内容,可以通过深圳极光公司了解一下。深圳市和讯华谷信息技术有限公司(极光 Aurora Mobile)成立于2011年,是中国领先的开发者服务提供商,专注于为开发者提供稳定高效的消息推送、一键认证以及流量变现等服务,助力开发者的运营、增长与变现。
同时,极光的行业应用已经拓展至市场洞察、金融风控与商业地理服务,助力各行各业优化决策、提升效率。

百度网友f036095c5
推荐于2016-08-19 · TA获得超过1234个赞
知道小有建树答主
回答量:729
采纳率:83%
帮助的人:640万
展开全部

使用线程池会比较好。方便管理。你也要对链接的线程做一个限制,无限的链接创建线程会耗尽内存的。比如:

class NetworkService implements Runnable {
   private final ServerSocket serverSocket;
   private final ExecutorService pool;
   public NetworkService(int port, int poolSize)
       throws IOException {
     serverSocket = new ServerSocket(port);
     pool = Executors.newFixedThreadPool(poolSize);
   }
   public void run() { // run the service
     try {
       for (;;) {
         pool.execute(new Handler(serverSocket.accept()));
       }
     } catch (IOException ex) {
       pool.shutdown();
     }
   }
 }
 class Handler implements Runnable {
   private final Socket socket;
   Handler(Socket socket) { this.socket = socket; }
   public void run() {
     // read and service request on socket
   }
 }

 在没有消息的时候,线程要处于wait状态,当有消息的时候,用notify来激活。

更多追问追答
追问
大神,就是后台管理员添加了这个社区消息,我怎么操作线程池里面的这些线程去执行推送呢
追答

消息放到一个消息队列中,你可以简单的用ArrayList<String> messageQueue。线程只需要负责去读取信息就可以了。

// 发送线程

synchrnozed (messageQueue) {
    if (messageQueue.size() == 0) {
        messageQueue.wait();
    }
    else {
        // send message
    }
}

// 消息线程

synchrnozed (messageQueue) {   messageQueue.add(msg);
   messageQueue.notifyAll();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
霞霞会乖的Bibe8
2014-08-18 · 超过72用户采纳过TA的回答
知道答主
回答量:128
采纳率:0%
帮助的人:134万
展开全部
你看web socket的时候没发现页面都是要求html5吗,这个适用性当前环境下不强,而且这方面的具体应用其实不多,使用ajax刷新简单方便,兼容性也好,基本上满足一般的需求。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式