使用tomcat8和websocket进行消息推送失败

小新s23 2016-04-29 04:19:51
首先上代码,

private static int onlineCount = 0;
// concurrent包的线程安全Set,用来存放每个客户端对应的Websocket_firstServer对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
private static CopyOnWriteArraySet<Websocket_firstServer> webSocketSet = new CopyOnWriteArraySet<Websocket_firstServer>();
// 与某个客户端的连接会话,需要通过它来给客户端发送数据
private Session session;

*//**
* 连接建立成功调用的方法
*
* @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据
*//*

@OnOpen
public void onOpen(Session session) {
this.session = session;
webSocketSet.add(this); // 加入set中
addOnlineCount(); // 在线数加1
System.out.println("有新连接加入!当前在线人数为" + getOnlineCount());
}

*//**
* 连接关闭调用的方法
*//*

@OnClose
public void onClose() {
webSocketSet.remove(this); // 从set中删除
subOnlineCount(); // 在线数减1
System.out.println("有一连接关闭!当前在线人数为" + getOnlineCount());
}

*//**
* 收到客户端消息后调用的方法
*
* @param message 客户端发送过来的消息 @param session 可选的参数
*//*

@OnMessage
public void onMessage(String message, Session session) {
System.out.println("来自客户端的消息:" + message);
// 群发消息
for (Websocket_firstServer item : webSocketSet) {
try {
item.sendMessage(message);
} catch (IOException e) {
e.printStackTrace();
continue;
}
}
}

*//**
* 发生错误时调用
* @param session
* @param error
*//*

@OnError
public void onError(Session session, Throwable error) {
System.out.println("发生错误");
error.printStackTrace();
}

public void sendMessage(String message) throws IOException {
this.session.getBasicRemote().sendText(message);
// this.session.getAsyncRemote().sendText(message);
}

public static synchronized int getOnlineCount() {
return onlineCount;
}

public static synchronized void addOnlineCount() {
Websocket_firstServer.onlineCount++;
}

public static synchronized void subOnlineCount() {
Websocket_firstServer.onlineCount--;

}

然后我在html页面调用

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>html5+bootstrap</title>
</head>
<body>
<script type="text/javascript">
var socket=null;
//判断当前浏览器是否支持WebSocket

if('WebSocket' in window){
socket = new WebSocket("ws://localhost:8080/websocket/");
}else{
alert('Not support websocket')
}
// 打开Socket
socket.onopen = function(event) {

// 发送一个初始化消息
socket.send('I am the client and I\'m listening!');

// 监听消息
socket.onmessage = function(event) {
console.log('Client received a message',event);
};

// 监听Socket的关闭
socket.onclose = function(event) {
console.log('Client notified socket has closed',event);
};

// 关闭Socket....
//socket.close()
};
</script>
</body>
</html>

访问html的时候报错
"NetworkError: 404 Not Found - http://localhost:8080/websocket/"
/websocket/
Firefox 无法建立到 ws://localhost:8080/websocket/ 服务器的连接。

socket = new WebSocket("ws://localhost:8080/websocket/");
...全文
436 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
王柏柘 2016-11-15
  • 打赏
  • 举报
回复
解决没???????????
小新s23 2016-07-01
  • 打赏
  • 举报
回复
引用 4 楼 qq_31090397 的回复:
同问啊,楼主解决了吗
没有,,,
qq_31090397 2016-06-30
  • 打赏
  • 举报
回复
同问啊,楼主解决了吗
oh_Maxy 2016-04-30
  • 打赏
  • 举报
回复
没用过,搜了下WebSocket相关内容 http://www.open-open.com/lib/view/open1428648292500.html 或者再按照案例,正确的走一遍呢?
小新s23 2016-04-29
  • 打赏
  • 举报
回复
引用 1 楼 oh_Maxy 的回复:
用具体的ip试试呢?
"NetworkError: 404 Not Found - http://127.0.0.1:8080/websocket/" /websocket/ Firefox 无法建立到 ws://127.0.0.1:8080/websocket/ 服务器的连接。 socket = new WebSocket("ws://127.0.0.1:8080/websocket/"); 还是不行,是不是路径写法有错?还是我没有发布出来?
oh_Maxy 2016-04-29
  • 打赏
  • 举报
回复
用具体的ip试试呢?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧