Java中netty怎样主动推送信息。

Java中netty怎样主动推送信息。,第1张

客户端是发送消息给服务器的,服务器不可能主动发消息给客户端。就是长链接,比如,客户端发送一个消息你好的消息给服务器,那么服务器会接收到,这时候就有客户端的所有信息,比如id+ip组成的管道,管道id(一般是用户id)。

如果“向所有客户端发送某消息”,那么要想办法在设置一个资格(比如登陆的时候保存客户端的信息用对象存储,这样更利于更改更新管道)。然后把所有客户端放到一个list里面存储。遍历list,给每个用户发送消息。

C/S 架构C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信。

C/S 架构也可以看做是胖客户端架构。因为客户端需要实现绝大多数的业务逻辑和界面展示。这种架构中,作为客户端的部分需要承受很大的压力,因为显示逻辑和事务处理都包含在其中,通过与数据库的交互(通常是SQL或存储过程的实现)来达到持久化数据,以此满足实际项目的需要。C/S 架构的优缺点优点:

1C/S架构的界面和操作可以很丰富。

2安全性能可以很容易保证,实现多层认证也不难。

3由于只有一层交互,因此响应速度较快。缺点:

1适用面窄,通常用于局域网中。

2用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。

3维护成本高,发生一次升级,则所有客户端的程序都需要改变。 B/S架构B/S架构的全称为Browser/Server,即浏览器/服务器结构。Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现,Browser客户端,WebApp服务器端和DB端构成所谓的三层架构。B/S架构的系统无须特别安装,只有Web浏览器即可。

B/S架构中,显示逻辑交给了Web浏览器,事务处理逻辑在放在了WebApp上,这样就避免了庞大的胖客户端,减少了客户端的压力。因为客户端包含的逻辑很少,因此也被成为瘦客户端。B/S架构的优缺点优点:

1)客户端无需安装,有Web浏览器即可。

2)BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。

3)BS架构无需升级多个客户端,升级服务器即可。缺点:

1)在跨浏览器上,BS架构不尽如人意。

2)表现要达到CS程序的程度需要花费不少精力。

3)在速度和安全性上需要花费巨大的设计成本,这是BS架构的最大问题。

4)客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax风行后此问题得到了一定程度的缓解)

Web端 常见的消息推送实际上大多数都是模拟推送,之所以是模拟推送,是因为这种实现并不是服务器主动推送,本质依旧是客户端发起请求,服务端返回数据,起主动作用的是客户端。

短轮询:实现上最简单的一种模拟推送方法,原理就是客户端不断地向服务端发请求,如果服务端数据有更新,服务端就把数据发送回来,客户端就能接收到新数据了。

消息推送可以试一试极光。Push 支持开发者直接通过极光推送的控制台,通过地图圈选一个经纬度范围,创建一个虚拟的栅栏围出一个虚拟地理边界,当开发者APP的用户进入、离开这个区域,或在该区域内活动时,设备APP可以自动接收通知,实现准确的消息推送,把有用的信息,在合适的地方,推送给合适的人。

如何实现服务器向客户端发出一条通知?

当向服务器数据库插入一条数据时,服务器就向客户端发出一条信息,让客户端及时知道;

如何实现呢?

能描述清楚点吗?问题太大概了吧。

向客户发送消息的sendMessage方法是不是已经准备好了?

那接下来就是选择在程序中100%确定已经向数据库插入了数据的地方调用sendMessage方法。

简单的实现可以用js的alert方法。

执行数据库插入操作,后返回值,js判断,根据返回的值,如果插入成功,则alert('插入成功')

ejb的拦截器应该能实现,给向数据库插入数据的这个方法加个拦截器,在这个拦截器类里边先调用这个方法,然后实现向客户端发消息

得看你做B/S还是C/S

看不懂说的啥。。

在消息库里插一条 消息数据。 再查询出来 不就好了。 这是简单的方式咯。 复杂点就用推送技术吧

基本上就两招:

要么是 短连接下的客户端发起轮询 模型;

要么是 长连接下的服务器端主动推送 模型。

C/S没玩过,B/S用过推模式,比轮询要好的多

我现在用的数据库连接字符串是private static string conStr = @"Data Source=192168137,1611;Initial Catalog=QLYM;User ID=sa;Pwd=system";这是局域网的!那连接服务器数据库应该什么写呢?

当服务器数据库数据有更新时,客户端如何及时知道?客户端是client的,轮询会对服务器有压力,有什么技术更好的?

客户端只设置两个,每分钟访问服务器一次,这样服务器的压力应该不大吧?

后台更改前台的内容,常用的方法有两种,一是通过AJAX方式完成页面的局部刷新,二是通过WebSocket实现服务器主动推送数据到前台。

在前台使用AJAX时,可以通过监控后台发送过来的返回数据,然后更新前台的内容。在服务器端修改数据时,前端页面可以实时响应,不需要刷新整个页面。通过AJAX方式可以实现前后端分离,提高了系统的性能和页面的友好度。

如果使用WebSocket实现服务器主动推送数据到前台,则需要在前后端同时建立WebSocket连接,当后台修改数据时,便可以主动向前端发送消息,以实现实时更新前端页面内容的效果。

无论哪种方法,前台都需要通过不同的技术手段从后台获取数据,并且格外注意安全性,以避免可能的安全问题。

这实际上是CS编程理念的东西。在CS概念中,S端不需要知道所有C端的具体信息,因为一个S对应多个C,而C也不能保障有固定的网络地址。因此S端的逻辑,就是:监听&响应。这和C端编程有很大不同(其实多数不同是因为概念问题,而不是代码问题),我给你的建议就是,不要试图使用C端的逻辑去尝试S端,这样不会是一个很好的S端程序,作为初学者,先尝试按照标准逻辑实现程序之后,再尝试花样比较好,而Server端的编程,比客户端更有完整的逻辑流程,还是先根据标准流程走吧。简单的说,CS的逻辑就是,在C没有消息的时候,S不知道C在哪里,因此标准C逻辑不适合S端。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Java中netty怎样主动推送信息。

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情