仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 485|回复: 9
打印 上一主题 下一主题

[学习教程] JAVA网站制作之WebSocket与Java仓酷云

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。BozhidarBozhanov是OntotextAD的初级软件工程师,具有多年的从业履历,也是stackoverflow上的活泼用户。他精晓于Java与Java手艺栈,如Spring、JPA、JavaEE等,同时仍是http://computoser.com与http://welshare.com的开创人。曾开辟过爱立信的项目、保加利亚电子政务项目和年夜型雇用平台等。克日Bozhidar撰文谈到了WebSocket与Java,并给出了响应的代码示例。Bozhidar在文中具体剖析了WebSocket的道理、合用局限,和怎样经由过程Java来利用WebSocket。
WebSocket是一个很酷的新手艺,能够完成扫瞄器与服务器之间及时、双向的通讯,几近没有任何分外的价值。我这里要做的事变就是供应一个十分简便,但却内容丰厚的概览,先容怎样入手下手利用这门手艺。起首读者必要懂得以下一些事变:


  • 起首在扫瞄器与服务器之间必要开启一个TCPSocket毗连,每方都能够向对方发送动静(好比说,服务器能够在无数据时将其推送进来,无需利用轮询、长轮询、iframes等手艺)。
  • 并非一切扫瞄器都撑持WebSocket手艺,IE10是首个撑持WebSocket的IE版本,Android仍然还存在着一些成绩。幸亏有SockJS,在不撑持WebSocket的情形下,它会退回到其他的推送手艺。
  • 并非一切的代办署理服务器都撑持或是同意WebSocket,因而这时候仍是必要退回到其他的推送手艺。
  • WebSocket合适于游戏、买卖型使用,现实上,它合适于任何服务器要向扫瞄器推送数据的场景。
  • Java有尺度API(JSR-356),你能够在服务端经由过程它来处置WebSocket毗连。
  • Spring在JavaAPI的基本之上供应了一个API。关于Spring供应的撑持来讲,好动静是它对SockJS供应了服务器真个撑持,你也能够毫无压力地利用依附注进。Spring还抵消息驱动的架构供应了STOMP撑持。下面的两篇Spring文章都给出了GitHub上示例项目标链接,我激烈倡议人人看看。
  • 久长以来,Atmosphere框架一向是服务器推送手艺的办理计划。这里是WebSocket上手指南。别的,Cometd也供应了WebSocket撑持。
在给出详细的示例代码前,我起首来先容一下Socket的性命周期,包含客户真个与服务器真个:

  • 扫瞄器收回一个HTTP哀求,带有一个特别的Upgrade头,其值是“websocket”。
  • 假如服务器可以“了解”WebSocket,那末它会利用形态101举行应对——互换协定。从如今入手下手,我们就不再利用HTTP了。
  • 当服务器吸收这个TCPSocket毗连后,一个初始化办法会失掉挪用,以后的WebSocketSession会被传送出去。每一个Socket都有独一一个Sessionid。
  • 当扫瞄器向服务器发送动静时,另外一个办法会失掉挪用,你在这里取得Session与动静负载。
  • 依据某个负载参数,使用代码会实行一个举措。负载的格局完整取决于开辟者。一样平常来讲会利用JSON序列化的对象。
  • 当服务器必要发送动静时,它必要取得这个Session对象,然后经由过程它来发送动静。
  • 当扫瞄器封闭毗连时,服务器会失掉关照,如许它就能够清算与特定Session联系关系的一些资本了。
今朝,还没有任何一个API或框架可以撑持基于注解的路由。JavaAPI撑持基于注解的端点处置器,不外每一个毗连URL必要一个类来处置,一般情形下,你但愿在单个毗连上实行多个操纵。也就是说,你毗连到ws://yourserver.com/game/,然后想要传送“joinGame”和“leaveGame”等动静。相似地,服务器必要发送回多品种型的动静。我利用了列举来完成这一点,列举中包括了一切大概的举措与事务范例,然后利用switch来断定该挪用哪个。
因而,我决意为我的算法音乐作曲家开辟一个复杂的游戏。它利用了SpringAPI,感乐趣的读者能够看看这个先容,这是我在公司所做的一次演讲。上面是一些示例代码:
  1. @ComponentpublicclassGameHandlerextendsWebSocketHandlerAdapter{privateMap
复制代码
上面来看一个示例场景,个中服务器必要向客户端发送动静。这就比如一个玩家到场了游戏一样,这时候其他一切玩家城市收到有新人到场的关照。体系中的中央类是Game,它具有一个玩家列表。如你所见,一个Player包括了一个对WebSocketSession的援用。如许,当新的玩家到场时,上面的Game中的办法就会失掉挪用:
  1. publicbooleanplayerJoined(Playerplayer){for(PlayerotherPlayer:players.values()){otherPlayer.playerJoined(player);}players.put(player.getSession().getId(),player);returntrue;}
复制代码
player.playerJoined(..)会在毗连之上发送一条动静,关照扫瞄器有新的玩家到场了:
  1. publicvoidplayerJoined(Playerplayer){GameEventevent=newGameEvent(GameEventType.PLAYER_JOINED);event.setPlayerId(player.getSession().getId());event.setPlayerName(player.getName());try{session.sendMessage(newTextMessage(event.toJson()));}catch(IOExceptione){newIllegalStateException(e);}}
复制代码
从服务器向扫瞄器发送动静大概还必要一个调剂job举行触发。
关头在于你保护了一个一切已毗连的扫瞄器列表,如许就能够向回发送信息了。这个列表能够是个静态属性,不外关于单例的SpringBean来讲就没需要这么做了。
如今,有两个主要的方面必要我们注重——平安与认证。这是来自于Heroku的一篇很不错的文章,对平安与认证举行了具体的先容。假如另有其他敏感信息,你就应当利用wss(WebsocketoverTLS)了。你还应当在服务器端与客户端考证输出,而不该该依附于Origin头,由于打击者能够十拿九稳地骗过扫瞄器。

C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊
蒙在股里 该用户已被删除
沙发
发表于 2015-1-20 21:15:48 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
乐观 该用户已被删除
板凳
发表于 2015-2-6 07:34:12 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
海妖 该用户已被删除
地板
发表于 2015-2-15 15:30:33 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
爱飞 该用户已被删除
5#
发表于 2015-2-16 16:43:12 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
兰色精灵 该用户已被删除
6#
发表于 2015-3-5 06:57:39 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
冷月葬花魂 该用户已被删除
7#
发表于 2015-3-8 18:28:50 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-11 21:28:51 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
小魔女 该用户已被删除
9#
发表于 2015-3-19 14:15:39 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
透明 该用户已被删除
10#
发表于 2015-3-28 09:39:36 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 17:01

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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