2 answerbob answerbob 于 2012.10.24 11:13 提问

有没有实现Bayeux并且能挂在resin上的框架

CometD貌似只能和jetty继承,请问有没有能实现Bayeux的框架能挂在resin上的?

或者别的基于长轮询的框架也成

2个回答

curie_87
curie_87   2012.10.24 13:46

https://github.com/playframework/play/tree/master/samples-and-tests/chat/app/controllers

这里有利用:
LongPolling(长轮询)
Refresh
WebSocket
的三种实现, 具体得看里面代码。

znl_12
znl_12 用websocket做什么,目前只是webkit内核浏览器支持的比较好。推荐 LongPolling。
5 年多之前 回复
LiDaming_and
LiDaming_and   2012.10.24 15:38

LongPolling 例子中, 使用了 Play 的 await(Future) , 这个用到了 Play 提供的 Continuation , 具体是什么你得去详细看文档. 简单说就是让线程分片执行, 执行一会停一会执行一会停一会.... 类似 ruby 中的 Fiber。

package controllers;

import play.*;
import play.mvc.*;
import play.libs.F.*;

import java.util.*;
import com.google.gson.reflect.*;

import models.*;

public class LongPolling extends Controller {

    public static void room(String user) {
        ChatRoom.get().join(user);
        render(user);
    }

    public static void say(String user, String message) {
        ChatRoom.get().say(user, message);
    }

    public static void waitMessages(Long lastReceived) {        

        List messages = await(ChatRoom.get().nextMessages(lastReceived));
        renderJSON(messages, new TypeToken<List<IndexedEvent<ChatRoom.Event>>>() {}.getType());
    }

    public static void leave(String user) {
        ChatRoom.get().leave(user);
        Application.index();
    }

}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!