我有以下代码来向浏览器发送推送通知,一旦我运行应用程序,EJB 就会启动,并在控制台中显示超时、发送等内容。
但是 Firefox 显示无法与位于 ws://localhost:8080/Notifications 的服务器建立连接。
JavaScript函数
<script type="text/javascript">
var wsocket;
function connect() {
wsocket = new WebSocket("ws://localhost:8080/Notifications");
alert("got connected");
wsocket.onmessage = onMessage;
}
function onMessage(evt) {
alert(evt);
var arraypv = evt;
alert("array" + arraypv);
document.getElementById("foo").innerHTML = arraypv[0];
}
alert("window" + connect);
window.addEventListener("load", connect, false);
</script>
Struts 映射
<action name="Notifications" class="com.example.controller.Notifications">
</action>
通知类
@ServerEndpoint("/Notifications")
public class Notifications {
static Queue<Session> queue = new ConcurrentLinkedQueue();
public static void send() {
System.err.println("send");
String msg = "Here is the message";
try {
/* Send updates to all open WebSocket sessions */
for (Session session : queue) {
session.getBasicRemote().sendText(msg);
}
} catch (IOException e) {
e.printStackTrace();
}
}
@OnOpen
public void openConnection(Session session) {
System.err.println("in open connection");
queue.add(session);
}
@OnClose
public void closedConnection(Session session) {
System.err.println("in closed connection");
queue.remove(session);
}
@OnError
public void error(Session session, Throwable t) {
System.err.println("in error");
queue.remove(session);
}
PriceVolumeBean 类
@Startup
@Singleton
public class PriceVolumeBean {
@Resource TimerService tservice;
private Random random;
@PostConstruct
public void init() {
System.err.println("in init");
random = new Random();
tservice.createIntervalTimer(1000, 1000, new TimerConfig());
}
@Timeout
public void timeout() {
System.err.println("in timeout");
Notifications.send();
}
}
pom.xml
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.0</version>
</dependency>
最佳答案
部署时
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
提供此内容。
关于java - Websocket 无法建立连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22369238/