HTML5技术

结合WebSocket编写WebGL综合场景示例 - ljzc002(6)

字号+ 作者:H5之家 来源:H5之家 2016-11-07 12:00 我要评论( )

这里把物体坐标系位移向世界坐标系位移投影的方法参考了Babylon教程示例。这里有一个思维上的难点:对于一个物体来说“模型的正向”、“mesh的正向”和“骨骼动画的正向”可能不是一个方向!这是模型绘制者使用3D模

  这里把物体坐标系位移向世界坐标系位移投影的方法参考了Babylon教程示例。这里有一个思维上的难点:对于一个物体来说“模型的正向”、“mesh的正向”和“骨骼动画的正向”可能不是一个方向!这是模型绘制者使用3D模型绘制工具时的习惯造成的,如果有条件的话可以在使用3D模型前用绘制工具把模型调整一下。

四、数据发送:

1、Java后台的Websocket代码:

1 import java.io.IOException; 2 import java.util.Date; 3 import java.util.concurrent.CopyOnWriteArraySet; javax.websocket.OnClose; 6 import javax.websocket.OnError; 7 import javax.websocket.OnMessage; 8 import javax.websocket.OnOpen; 9 import javax.websocket.Session; 10 import javax.websocket.server.ServerEndpoint; 11 12 @ServerEndpoint("/websocket3") Practice { onlineCount = 0; CopyOnWriteArraySet<Practice> webSocketSet = new CopyOnWriteArraySet<Practice>(); String admin=""; 17 private Session session; 18 private String; 19 private String; 20 @OnOpen onOpen(Session session) 22 { 23 this.session = session; addOnlineCount(); //在线数加1 { .id=this.session.getId(); 31 } catch (IOException e) { 32 e.printStackTrace(); 33 } 34 for(Practice item: webSocketSet) 35 { 36 if(!item.id.equals(this.id)) 37 { 38 try { 39 item.sendMessage("[getonl]"+this.id); 40 } catch (IOException e) { 41 e.printStackTrace(); 42 continue; 43 } 44 } 45 } 46 } 47 @OnClose onClose() 49 { 50 for(Practice item: webSocketSet) 51 { 52 if(!item.id.equals(this.id)) 53 { 54 try { 55 item.sendMessage("[getoff]"+this.id); 56 } catch (IOException e) { 57 e.printStackTrace(); 58 continue; 59 } 60 } 61 } { subOnlineCount(); (webSocketSet.size()>0) 67 { 68 int i=0; 69 for(Practice item: webSocketSet) (i==0) 72 { 73 i++; 74 item.name="admin"; 75 Practice.admin=item.id; 76 try { } catch (IOException e) { 79 e.printStackTrace(); 80 } 81 } 82 83 } 84 } { } 89 } { subOnlineCount(); } } 98 @OnMessage onMessage(String message, Session session) 100 { ((message.length()>6)&&(message.substring(0,6).equals("@name:"))) { 104 String str_name=message.split(":")[1]; { 107 if(Practice.admin.equals("")) .name=str_name; 110 Practice.admin=this.id; 111 try { } catch (IOException e) { 114 e.printStackTrace(); 115 } 116 } {.name=this.id; 120 try { 121 this.sendMessage("@name:"+this.session.getId()); 122 } catch (IOException e) { 123 e.printStackTrace(); 124 } 125 } 126 } 127 } ((message.length()>6)&&(message.substring(0,7).equals("privat:"))) (Practice item: webSocketSet) 131 { 132 if(item.id.equals(message.split("#")[0].split(":")[1])) 133 { 134 try { 135 item.sendMessage(this.id+"@"+message.split("#")[1]); 136 } catch (IOException e) { 137 e.printStackTrace(); 138 continue; 139 } 140 break; 141 } 142 } 143 } ((message.length()>6)&&(message.substring(0,8).equals("[admins]"))&&this.name.equals("admin")) (Practice item: webSocketSet) 147 { 148 if(!item.id.equals(this.id)) 149 { 150 try { 151 item.sendMessage(message); 152 } catch (IOException e) { 153 e.printStackTrace(); 154 continue; 155 } 156 } 157 } 158 } { (Practice item: webSocketSet) 163 { 164 if(!item.id.equals(this.id)) 165 { 166 try { 167 item.sendMessage(this.id+"@"+message); 168 } catch (IOException e) { 169 e.printStackTrace(); 170 continue; 171 } 172 } 173 } 174 } 175 } 176 @OnError onError(Session session, Throwable error){ 178 System.out.println("发生错误,关闭连接"); 179 for(Practice item: webSocketSet) 180 { 181 if(!item.id.equals(this.id)) 182 { 183 try { 184 item.sendMessage("[geterr]"+this.id); 185 } catch (IOException e) { 186 e.printStackTrace(); 187 continue; 188 } 189 } 190 } { subOnlineCount(); (webSocketSet.size()>0) 196 { 197 int i=0; 198 for(Practice item: webSocketSet) (i==0) 201 { 202 i++; 203 item.name="admin"; 204 Practice.admin=item.id; 205 } 206 try { } catch (IOException e) { 209 e.printStackTrace(); 210 } 211 } 212 } { } 217 } { subOnlineCount(); } 223 //webSocketSet.remove(this); error.printStackTrace(); 226 } sendMessage(String message) .session.getBasicRemote().sendText(message); 229 Date dt=new Date(); 230 //System.out.println(dt.getTime()+"==>>"+message); } sendMessage2(String message) .session.getAsyncRemote ().sendText(message); 235 Date dt=new Date(); 236 //System.out.println(dt.getTime()+"==>>"+message); } getOnlineCount() { 241 return onlineCount; 242 } addOnlineCount() { 244 Practice.onlineCount++; 245 } subOnlineCount() { 247 Practice.onlineCount--; 248 } 249 }

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • HTML5 WebSocket - Roberter

    HTML5 WebSocket - Roberter

    2016-10-25 16:00

  • websocket初探 - 2778085001

    websocket初探 - 2778085001

    2016-07-16 15:11

  • DIV+CSS:如何编写代码才能更有效率 - 2778085001

    DIV+CSS:如何编写代码才能更有效率 - 2778085001

    2016-06-29 15:00

  • 用node实现websocket协议 - 2778085001

    用node实现websocket协议 - 2778085001

    2016-06-25 14:00

网友点评