jersey sse html5,java - Server-sent event does not work with jersey SSE - Stack Overflow

I am trying to use JavaScript SSE from Jersey. I have Following code in my resource. I am hosting on Java7 and Tomcat 7. I dont get any error. But I don't see data either on page.

I call /broadcast to post data. It does show message. But nothing comes on client. In Firefox, I do see /broadcast event fired multiple times.

package net.jigarshah.dse.tracker;

import javax.inject.Singleton;

import javax.ws.rs.Consumes;

import javax.ws.rs.GET;

import javax.ws.rs.POST;

import javax.ws.rs.Path;

import javax.ws.rs.Produces;

import javax.ws.rs.core.MediaType;

import org.glassfish.jersey.media.sse.EventOutput;

import org.glassfish.jersey.media.sse.OutboundEvent;

import org.glassfish.jersey.media.sse.SseBroadcaster;

import org.glassfish.jersey.media.sse.SseFeature;

@Singleton

@Path("broadcast")

public class SSEResource {

private SseBroadcaster broadcaster = new SseBroadcaster();

@POST

@Produces(MediaType.TEXT_PLAIN)

@Consumes(MediaType.TEXT_PLAIN)

public String broadcastMessage(String message) {

OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder();

message = message + "\n\n";

OutboundEvent event = eventBuilder.name("message")

.mediaType(MediaType.TEXT_PLAIN_TYPE)

.data(String.class, message)

.build();

broadcaster.broadcast(event);

System.out.println("broadcasting listen [" +message+ "]");

return "Message was '" + message + "' broadcast.";

}

@GET

@Produces(SseFeature.SERVER_SENT_EVENTS)

public EventOutput listenToBroadcast() {

System.out.println("will listen");

final EventOutput eventOutput = new EventOutput();

this.broadcaster.add(eventOutput);

return eventOutput;

}

}

My Index.html code is as below.

var url = "webapi/broadcast";

//var url="http://localhost:8080/trackapp/webapi/broadcast/listen";

var source=new EventSource(url);

source.οnerrοr=function(event)

{

console.log("error [" + source.readyState + "]");

};

source.onopen = function(event){

console.log("eventsource opened!");

};

source.onmessage=function(event)

{

console.log(event.data);

document.getElementById("result").innerHTML+=event.data + "
";

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值