起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1634|回复: 3

[处理中2] 关于websocket的实现

[复制链接]

64

主题

216

帖子

696

积分

高级会员

Rank: 4

积分
696
QQ
发表于 2016-4-13 15:40:13 | 显示全部楼层 |阅读模式
  1. Model.prototype.socket = function(event){
  2.              var me = this;
  3.              var inputElement = document.getElementById(me.getIDByXID("chatInput")).value;
  4.              var url = "ws://"+ window.location.host+"/baas/websockets";
  5.          var ws = new WebSocket(url);
  6.                  ws.onopen = function(){
  7.                  $("#"+me.getIDByXID('showDiv')+"").append("online...");
  8.                 };
  9.                 ws.onmessage = function(evt){               
  10.                   $("#"+me.getIDByXID('showDiv')+"").innerHTML = evt.data;               
  11.                 };
  12.                 ws.onclose = function(evt) {
  13.                         console.log("WebSocketClosed");
  14.                 };
  15.                 ws.onerror = function(evt) {
  16.                         console.log("WebScoketError");
  17.                 };
  18.                 $("#"+me.getIDByXID("sendBtn")+"").click(function() {
  19.                         ws.send(inputElement);                       
  20.                 });
  21.         };

  22.         Model.prototype.sendBtnClick = function(event){
  23.            var me = this;
  24.            if($.trim(me.comp("chatInput").val()) !== ""){       
  25.               me.socket(event);
  26. }
复制代码
这是我写的js部分。图片是执行后的header;

  1. import java.io.IOException;
  2. import java.util.concurrent.CopyOnWriteArraySet;

  3. import javax.websocket.OnClose;
  4. import javax.websocket.OnError;
  5. import javax.websocket.OnMessage;
  6. import javax.websocket.OnOpen;
  7. import javax.websocket.Session;
  8. import javax.websocket.server.PathParam;
  9. import javax.websocket.server.ServerEndpoint;

  10. import org.apache.commons.logging.Log;
  11. import org.apache.commons.logging.LogFactory;
  12. @ServerEndpoint("/websockets")
  13. public class WebSocketService {
  14.     private static int onlineCount = 0;
  15.         private static CopyOnWriteArraySet<WebSocketService> webSocketSet = new CopyOnWriteArraySet<WebSocketService>();
  16.        
  17.         private Session session;
  18.         @OnOpen
  19.         public void onOpen(Session session){
  20.                 this.session = session;
  21.                 webSocketSet.add(this);
  22.                 addOnlineCount();
  23.                 System.out.println("有人上线了");               
  24.         }

  25.         @OnClose
  26.         public void onClose(){
  27.                 webSocketSet.remove(this);
  28.                 subOnlineCount();
  29.                 System.out.println("有人退出了");
  30.                
  31.         }

  32.         @OnMessage
  33.         public void onMessage(String message, Session session){
  34.                 System.out.println("来自客户端的消息:" + message);
  35.                 //群发消息
  36.                 for(WebSocketService item: webSocketSet){
  37.                         try {
  38.                                 item.sendMessage(message);
  39.                         } catch (IOException e) {
  40.                                 e.printStackTrace();
  41.                                 continue;
  42.                         }
  43.                        
  44.                 }
  45.         }
  46.         private void sendMessage(String message) throws IOException {
  47.                 this.session.getBasicRemote().sendText(message);
  48.                 //this.session.getAsyncRemote().sendText(message);
  49.         }
  50.         @OnError
  51.         public void onError(Session session,Throwable error) {
  52.                 System.out.println("发生错误");
  53.                 error.printStackTrace();
  54.         }
  55.         public static synchronized int getOnlineCount() {
  56.                 return onlineCount;
  57.                
  58.         }
  59.         public static synchronized void addOnlineCount() {
  60.                 WebSocketService.onlineCount++;
  61.                
  62.         }
  63.         public static synchronized void subOnlineCount() {
  64.                 WebSocketService.onlineCount--;
  65.                
  66.         }
复制代码
这个是java代码。
下面是错误提示消息。
WebSocket connection to 'ws://localhost:8080/baas/websockets' failed: Error during WebSocket handshake: Unexpected response code: 500



真心不会搞这玩意了。哪位大神来帮帮忙啊?能远程最好了,非常感谢。



request.png

12

主题

2627

帖子

2866

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2866
发表于 2016-4-13 17:10:22 | 显示全部楼层
建议先上网找找标准的html中, 如何在js中使用websocket
回复 支持 反对

使用道具 举报

64

主题

216

帖子

696

积分

高级会员

Rank: 4

积分
696
QQ
 楼主| 发表于 2016-4-14 15:01:11 | 显示全部楼层
hecr 发表于 2016-4-13 17:10
建议先上网找找标准的html中, 如何在js中使用websocket

我照着他们的服务写了一遍,但不知道这个服务是该怎么去使用的,请问您知道吗?
回复 支持 反对

使用道具 举报

发表于 2016-4-14 16:13:40 | 显示全部楼层
liuyong 发表于 2016-4-14 15:01
我照着他们的服务写了一遍,但不知道这个服务是该怎么去使用的,请问您知道吗? ...

你是看的那个文档??
你先在浏览器的地址栏输入:
ws://localhost:8080/baas/websockets
保证这个服务是可以正常访问的才可以!!
这个应该是个sevlet ,具体tomcat 如果使用websockets  服务,你还是上网查下吧!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-22 11:27 , Processed in 0.083187 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表