Dear support,
we are using your Grizzly 1.9.31 "Full Embedded Server" for our server.
We are providing video or events stream to clients via a Comet Service.
For each client request a new CometHandler is added to the CometContext,
that is created when the first request is received.
We use the following code:
/void startComet(HttpServletRequest req, HttpServletResponse res) {
String topic = req.getRequestURI();
CometEngine engine = CometEngine.getEngine();
CometContext context = engine.getCometContext(topic);
if (context == null) {
context = engine.register(topic);
context.setExpirationDelay(-1);
context.setBlockingNotification(false);
VideoSource videoSource =
createVideoSource(req.getPathInfo(), context);
context.addAttribute("videoSource", videoSource);
videoSource.start();
}
MultipartCometHandler handler = new MultipartCometHandler(topic);
handler.attach(res);
context.addCometHandler(handler);
}/
where MultipartCometHandler class implements CometHandler.
When some new frame or event comes up, the VideoSource notifies the
CometContext with the /CometContext.notify(Object obj)/ method.
We have noticed that if more than one client is connected to the
CometContext, and for some reason one of them is blocked reading the socket
(for example it halts on a breakpoint in test mode) all other clients
halt too. When the blocking client restarts also the others do.
We try to solve this problem setting blockingNotification parameter to
/false/ via /CometContext.setBlockingNotification(false)/ method,
but doesn't work.
Are we doing some mistake? Is there a way to create non blocking comet
contexts?
Thanks for support
Regards
--
Leonardo Pecile
ImaVis S.r.l.
Via F.lli Carpigiani, 4
40138 - Bologna - Italy
phone: + 39 051 6012120
fax: +39 051 531666
web: www.imavis.com
email: leonardo.pecile_at_imavis.com