1、如何实现java http长连接推送数据
通过轮询来实现长连接
轮询:隔一段时间访问服务器,服务器不管有没有新消息都立刻返回。
http长连接实现代码:
客户端:
package houlei.csdn.keepalive;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.concurrent.ConcurrentHashMap;
/**
* C/S架构的客户端对象,持有该对象,可以随时向服务端发送消息。
* <p>
* 创建时间:2010-7-18 上午12:17:25
* @author HouLei
* @since 1.0
*/
public class Client {
/**
* 处理服务端发回的对象,可实现该接口。
*/
public static interface ObjectAction{
void doAction(Object obj,Client client);
}
public static final class DefaultObjectAction implements ObjectAction{
public void doAction(Object obj,Client client) {
System.out.println("处理:\t"+obj.toString());//诊断程序是否正常
}
}
public static void main(String[] args) throws UnknownHostException, IOException {
String serverIp = "127.0.0.1";
int port = 65432;
Client client = new Client(serverIp,port);
client.start();
}
private String serverIp;
private int port;
private Socket socket;
private boolean running=false;
private long lastSendTime;
private ConcurrentHashMap<Class, ObjectAction> actionMapping = new ConcurrentHashMap<Class,ObjectAction>();
public Client(String serverIp, int port) {
this.serverIp=serverIp;this.port=port;
}
public void start() throws UnknownHostException, IOException {
if(running)return;
socket = new Socket(serverIp,port);
System.out.println("本地端口:"+socket.getLocalPort());
lastSendTime=System.currentTimeMillis();
running=true;
new Thread(new KeepAliveWatchDog()).start();
new Thread(new ReceiveWatchDog()).start();
}
public void stop(){
if(running)running=false;
}
/**
* 添加接收对象的处理对象。
* @param cls 待处理的对象,其所属的类。
* @param action 处理过程对象。
*/
public void addActionMap(Class<Object> cls,ObjectAction action){
actionMapping.put(cls, action);
}
public void sendObject(Object obj) throws IOException {
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(obj);
System.out.println("发送:\t"+obj);
oos.flush();
}
class KeepAliveWatchDog implements Runnable{
long checkDelay = 10;
long keepAliveDelay = 2000;
public void run() {
while(running){
if(System.currentTimeMillis()-lastSendTime>keepAliveDelay){
try {
Client.this.sendObject(new KeepAlive());
} catch (IOException e) {
e.printStackTrace();
Client.this.stop();
}
lastSendTime = System.currentTimeMillis();
2、百度自动推送代码好用吗?要添加在网站的哪里
自动推送代码,只是帮助网站内容的推送;
大的效果还没看到,应该是有一定好处的;
添加到网站的通用模板里面。
一般是添加在head或者footer里面;
因为是要权重进行推送。
建议加到footer里面,在底部的话不怎么影响网站打开加载速度。对用户体验好点。
3、apns http/2推送给苹果成功,但是手机设备没收到什么原因
1. 确认您的应用在苹果开发者网站上已经正确配置了APNs,并且下载安装了APNs证书;
2. 请使用设备来测试推送。模拟器是获取不到device token的,所以不能进行绑定,当然也不能进行推送测试。满足以上前提条件时,核对以下步骤:1. 确认修改注册接口中的API_KEY是正确的应用;2. 正确调用bindChannel,并成功返回appid、userid和channelid,而且appid请确认是正确的应用;
3. 在管理界面的推送设置里,成功上传.pem格式的APNs开发证书和生产证书(只测试开发版可以不需要生产证书,pem证书大小约为4K,并且fileencoding必须为utf8);
4. 注册接口(+ (void)registerChannel:(NSDictionary *)launchOptions apiKey:(NSString *)apikey pushMode:(BPushMode)mode withFirstAction:(NSString *)leftAction withSecondAction:(NSString *)rightAction withCategory:(NSString *)category isDebug:(BOOL)isdebug)中,如果是测试开发版请设置BPushMode为BPushModeDevelopment,生产版设置为BPushModePruction;
5. 修改配置后,请卸载应用再安装;
6. iOS推送只支持通知,并且在推送通知时,请正确勾选推送的是开发模式还是生产模式;
7. 如果在应用中还推送不了,请先用sdk自带的demo进行调试,再次确认1~6步。
4、java怎么调用http接口推送数据
这里有一个Java实现的Http请求。
HTTP请求:http://www.sojson.com/blog/123.html
HTTP接口测试工具:http://www.sojson.com/httpRequest/
有问题继续问我!
5、从服务器端向客户端推送信息采用什么协议实现(基于HTTP方式)?
但是这种情况的确存在,例如Comet架构。
Dojo Foundation定义了一套Bayeux协议专门从事这种场景下的使用。
通常,要实现浏览器和服务器之间的双工通讯,需要建立长连接,并通过异步调用来实现。
Bayeux也被称作分路复用协议,
Bayeux的主要目的是支持使用ajax的客户端与服务器端之间灵敏,快速的信息交互。
Bayeux 是一种用来在客户端和服务器端传输低延迟的异步消息(主要通过http)的一种协议。它定义的消息通过命名通道进行路由并且能够进行交互传 送:server - client, client - server 甚至 client - client (当然还是需要通过server中转)。默认的,此通道已经引用了发布的路由语义,但同时也支持其它路由模块。
从服务器端向客户端异步发送的数据通常被叫做 “服务器推”(server-push)。这种使用ajax的web应用和服务器推技术的结合称作“Comet”。 Cometd是一个提供多种开发语言的Bayeux项目,由Dojo基金会提供支持。
6、如何在Java多线程下高效利用HttpClient连接同一服务器接口?
您好,提问者:
1、先说长连接吧,如果TCP协议的话长连接可以通过心跳包来实现。
2、推送的话,这个可以弄一个定时器,来控制线程,推送发送完毕,线程stop()。
7、阿里云 短信 状态报告接收 HTTP批量推送模式为什么接收不到?
其实就是接受一个 post请求的 http调用,他那不是有现成的sdk么,应该还有python版本的,你直接集成就好了!
8、wordpress网站的自动推送怎么操作
有两种方法:
在wp后台有一个ping服务。在WordPress后台->撰写->更新服务,将各大搜索引擎ping地址填上即可:
http://ping.网络.com/ping/RPC2利用站长工具进行自动提交。这个只需要在站点添加如下这段js代码,建议加在foot.php中。
9、http长连接技术是否支持安卓的推送。
感觉你这是ajax轮询的方式,所以并不能说是服务器推送消息给某个用户,因为http是基于请求响应的。如果开发手机版本的话,也可以这么用,但是效率是不高的,如果是android的话,其实已经有一些推送技术的开源出来了,直接使用就可以,完全可以实现这种功能。我尝试开发android的时候,使用过androidpn的推送技术,实现聊天和服务器推送都没有问题的。
10、PHP做HTTP接口如何做到主动推送信息
事件触发的时候给目标网址发送数据就可以了,如果是定时推送就写个定时任务。
使用 http_get($url) 或者用 curl 都可以发送数据。具体使用就不多说了,网络很多。