文章目录:
- 1、golang socket通信 怎么把一个客户端发送的数据推送给其他客户端
- 2、HTML5 WebSocket如何实现消息推送?
- 3、如何实现socket信息推送
- 4、iOS 可以使用socket进行远程消息推送吗
- 5、关于 java socket的消息推送问题
- 6、请教如何实现socket消息订阅推送
golang socket通信 怎么把一个客户端发送的数据推送给其他客户端
Socket通信的原理还是比较简单的, 它大致分为以下几个步骤。 服务器端的步骤如下。 (1)建立服务器端的Socket,开始侦听整个网络中的连接请求。 (2)当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端之间的...
HTML5 WebSocket如何实现消息推送?
HTML5 WebSocket实现消息推送有以下两种方法:
长连接:在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求或是采用xhr请求,服务器端就能源源不断地往客户端输入数据。 优点:消息即时到达,不发无用请求;管理起来也相对便。
Flash Socket:在页面中内嵌入一个使用了Socket类的 Flash 程序JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示。 优点:实现真正的即时通信,而不是伪即时。
实现消息推送可以试一试极光。极光是国内领先的移动开发者服务提供商,近十年里,极光紧密围绕移动开发者的需求,打造了一系列针对开发者运营、增长及变现的产品。
如何实现socket信息推送
1.首先,了解socket的连接过程:
1)服务器监听;2)客户端请求;3)连接确认(具体详情可以见百度百科,我在这也就不多说了)。
2.socket通信机制:
服务器端
一、创建服务器套接字(CREATE)。
二、服务器套接字进行信息绑定(BIND),并开始监听连接(LISTEN)。
三、接受来自客户端的连接请求(ACCEPT),并创建接收进程。
四、开始数据传输(SEND、RECEIVE)。
五、关闭套接字(CLOSESOCKET)。
客户机端
一、创建客户机套接字(CREATE)。
二、与远程服务器进行连接(CONNECT),如被接受则创建接收进程。
三、开始数据传输(SEND、RECEIVE)。
四、关闭套接字(CLOSESOCKET)。
具体在Java中的实现是:
服务器端:
1)创建ServerSocket,需要使用端口号进行标识,以便客户端进行连接。
如:ServerSocket serverSocket = new ServerSocket(9999);
2)创建Socket获取连接
如: Socket socket = serverSocket.accept();
3)便可以进行通信内容传输了。
客户端:
1)创建Socket,进行与服务器连接,需要填写服务器ip,以及服务器的端口号
如:Socket socket = new Socket("127.0.0.1", 9999);
2)进行通信内容的传输。
以上只是一个简单的socket通信案例,想要了解的可以进入该链接下载:
3.利用socket通信进行服务器端到客户端的消息推送的思路:
客户端登录后发送一个消息给服务器端,用一个标识作为用户客户端程序关闭后服务器端是否推送消息给客户端,如果有则进行消息推送,如果没有则不进行消息推送,而当程序运行时就是一般的socket通信,也就是服务器端写一条消息推送给客户端,客户端便可以接收,并在消息栏上显示,点击消息栏进行相应的界面即可。
服务器就不多说了,方法是差不多的。
客户端:
需要使用Service来进行监听:
[java] view plain copy
print?
public class PushService extends Service {
private PushClient mClient;
private Handler mHandler;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
initHandler();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mClient = new PushClient(new InetSocketAddress("192.168.4.101", 9999),
mHandler);
mClient.start();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
if (mClient != null) {
mClient.disConnect();
}
super.onDestroy();
}
/**
* 初始化Handler
*/
private void initHandler() {
mHandler = new Handler(new Callback() {
@Override
public boolean handleMessage(Message msg) {
switch (msg.what) {
case Const.PUSH_MSG:
String pushMsg = msg.obj.toString();
showNotification(pushMsg);
break;
default:
break;
}
return false;
}
});
}
/**
*
* 在状态栏显示通知
*/
@SuppressWarnings("deprecation")
private void showNotification(String msg) {
// 创建一个NotificationManager的引用
NotificationManager notificationManager = (NotificationManager) getSystemService(android.content.Context.NOTIFICATION_SERVICE);
// 定义Notification的各种属性
Notification notification = new Notification(R.drawable.ic_launcher,
msg, System.currentTimeMillis());
// FLAG_AUTO_CANCEL 该通知能被状态栏的清除按钮给清除掉
// FLAG_NO_CLEAR 该通知不能被状态栏的清除按钮给清除掉
// FLAG_ONGOING_EVENT 通知放置在正在运行
// FLAG_INSISTENT 是否一直进行,比如音乐一直播放,知道用户响应
notification.flags |= Notification.FLAG_AUTO_CANCEL; // 表明在点击了通知栏中的"清除通知"后,此通知不清除,经常与FLAG_ONGOING_EVENT一起使用
// DEFAULT_ALL 使用所有默认值,比如声音,震动,闪屏等等
// DEFAULT_LIGHTS 使用默认闪光提示
// DEFAULT_SOUND 使用默认提示声音
// DEFAULT_VIBRATE 使用默认手机震动,需加上uses-permission
// android:name="android.permission.VIBRATE" /权限
notification.defaults = Notification.DEFAULT_SOUND;
// 设置通知的事件消息
CharSequence contentTitle = msg; // 通知栏标题
CharSequence contentText = msg; // 通知栏内容
Intent notificationIntent = new Intent(this, TestActivity.class); // 点击该通知后要跳转的Activity
PendingIntent contentItent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);
notification.setLatestEventInfo(this, contentTitle, contentText,
contentItent);
// 把Notification传递给NotificationManager
notificationManager.notify(0, notification);
}
这样就可以在将接收到的消息在消息栏上显示了,点击后便可以进入相应的界面了。
iOS 可以使用socket进行远程消息推送吗
ios可以使用socket,但是要想做到远程推送可能还是需要apns机制,因为应用退到后台的时候只有apns能处理苹果服务器推送来的消息。iOS使用Socket的常用方式有如下:
(1)BSD Socket:是UNIX系统中通用的网络接口,基于C语言,比较底层
(2)CF Socket:苹果官方提供,来自于CoreFoundation框架
(3)AsyncSocket:对BSD Socket的封装,OC语言
(4)ysocket:对BSD Socket的封装,Swift语言
SOCKET原理:套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。是网络通信过程中端点的抽象表示,包含进行。
建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行于服务器端,称为ServerSocket。建立连接时所需的寻址信息为IP地址和端口号。
进行远程消息推送可以了解一下极光,极光就挺不错的。JPush iOS 推送相比直接向 APNs 推送减少开发及维护成本:应用开发者不需要去开发维护自己的推送服务器与 APNs 对接。集成了 JPush iOS SDK 后不必自己维护更新 device token。
通过 JPush 的 Web Portal 直接推送,也可以调用 JPush 的 HTTP 协议 API 来完成,开发工作量大大减少。
关于 java socket的消息推送问题
关于 java socket的消息推送问题,首先:开启服务端,并暴露出端口。然后通过一个while的死循环去不停的接收来自客户端的socket,并且通过一个ArrayList来维护。并且通过子线程去对list中的socket进行操作。
其次:客户端去访问服务器的端口。开启一个子线程去不停的接收来自服务端的消息。
然而关于推送服务的更多内容,可以通过深圳极光公司了解一下。深圳市和讯华谷信息技术有限公司(极光 Aurora Mobile)成立于2011年,是中国领先的开发者服务提供商,专注于为开发者提供稳定高效的消息推送、一键认证以及流量变现等服务,助力开发者的运营、增长与变现。
同时,极光的行业应用已经拓展至市场洞察、金融风控与商业地理服务,助力各行各业优化决策、提升效率。
请教如何实现socket消息订阅推送
做一个信息系统,本来用的是客户端每隔一段时间像服务器端查询是否有新消息,后来测试后,发现这样很占用服务器资源 现在想改用服务器直接向客户端信息推送的办法 服务器:tomcat 客户端:air(flex) 这里有个疑问: 建议可以单独写一个SocketServer就行了,定时发送链路检测包,断了重新连接,现在SP跟移动网关进行对接的时候都是长连接+链路检测的方式,只要定时发链路检测包,一般都不会断的。我的本意也是在服务器端建立socketServer,然后客户端socket连接,在tomcat启动的时候调用servlet启动这个socketServer 可能表达上让你误解了
ence contentTitle = msg; // 通知栏标题 CharSequence contentText = msg; // 通知栏内容 Intent n
点击了通知栏中的"清除通知"后,此通知不清除,经常与FLAG_ONGOING_EVENT一起使用 // DEFAULT_ALL 使用所有默认值,比如声音,震动,闪屏等
// DEFAULT_SOUND 使用默认提示声音 // DEFAULT_VIBRATE 使用默认手机震动,需加上uses-permission
notificationManager.notify(0, notification); } 这样就可以在将接收到的消息在消息栏上显示了,点击后便可以进入相应的界面了。iOS 可