Android使用websocket

使用library: https://github.com/tavendo/AutobahnAndroid

package com.fkapp.websocket;

import com.fkapp.websocket.R;

import de.tavendo.autobahn.WebSocketConnection;
import de.tavendo.autobahn.WebSocketException;
import de.tavendo.autobahn.WebSocketHandler;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
	private final String		TAG	= "MainActivity";
	public static String		wsUrl	= "ws://ip:port/chat"; /* TODO: 运行时替换ip port */
	public WebSocketConnection	wsC	= new WebSocketConnection();

	public Handler handler = new Handler()
	{
		@Override
		public void handleMessage( Message msg )
		{
			super.handleMessage( msg );
			if ( msg.what == 0 )
			{
			}
		}
	};

	public void toastLog( String s )
	{
		Toast.makeText( this, s, Toast.LENGTH_SHORT ).show();
	}

	private void wsStart()
	{
		try {
			wsC.connect( wsUrl, new WebSocketHandler()
				     {
					     @Override
					     public void onOpen()
					     {
						     toastLog( "Status: Connected to " + wsUrl );
						     wsC.sendTextMessage( "Hello, world!" );
					     }

					     @Override
					     public void onTextMessage( String payload )
					     {
						     toastLog( "Got echo: " + payload );
					     }

					     @Override
					     public void onClose( int code, String reason )
					     {
						     toastLog( "Connection lost." );
					     }
				     } );
		} catch ( WebSocketException e ) {
			e.printStackTrace();
		}
	}

	@Override
	protected void onCreate( Bundle savedInstanceState )
	{
		super.onCreate( savedInstanceState );
		setContentView( R.layout.activity_main );

		wsStart();

		Button wsSend = (Button) findViewById( R.id.wsSend );
		wsSend.setOnClickListener( new View.OnClickListener()
					    {
						    @Override
						    public void onClick( View v )
						    {
							    wsC.sendTextMessage( "ooxx" );
						    }
					    } );
	}

	@Override
	protected void onDestroy()
	{
		super.onDestroy();
		if ( wsC.isConnected() )
		{
			wsC.disconnect();
		}
	}

	@Override
	public boolean onCreateOptionsMenu( Menu menu )
	{
		/* Inflate the menu; this adds items to the action bar if it is present. */
		getMenuInflater().inflate( R.menu.main, menu );
		return(true);
	}

	@Override
	public boolean onOptionsItemSelected( MenuItem item )
	{
		/*
		 * Handle action bar item clicks here. The action bar will
		 * automatically handle clicks on the Home/Up button, so long
		 * as you specify a parent activity in AndroidManifest.xml.
		 */
		int id = item.getItemId();
		if ( id == R.id.action_settings )
		{
			return(true);
		}
		return(super.onOptionsItemSelected( item ) );
	}
}

进行通信

时间: 2024-10-23 13:59:12

Android使用websocket的相关文章

android利用WebSocket实现消息推送

1.webSocket服务端的配置与代码: (1).服务器端工程目录结构: (2).web.xml的配置 <servlet-name>webSocketServlet</servlet-name>        <servlet-class>com.cn.controller.WebSocketServletService</servlet-class>      </servlet>    <servlet-mapping>    

为Phonegap Android平台增加websocket支持,使默认成为socket.io首选通

为Phonegap Android平台增加websocket支持,使默认成为socket.io首选通道选择 广而告之 使用socket.io作为跨浏览器平台的实时推送首选,经测试在各个主流浏览器上测试都确实具有良好的下实时表现.这里为推广socketio-netty服务器端实现哈,做次广告,同时预热一下: socketio-netty : 又一款socket.io服务器端实现,兼容0.9-1.0版本~ 示范目的 我们要构建一个在市面上常见浏览器上都可以正常运行的集体聊天应用,保证在IE6+,Fi

android websocket推送

1.通过WebSocketServlet来实现 import java.io.IOException; import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.u

Android最佳实践——深入浅出WebSocket协议

首先明确一下概念,WebSocket协议是一种建立在TCP连接基础上的全双工通信的协议.概念强调了两点内容: TCP基础上 全双工通信 那么什么是全双工通信呢? 全双工就是指客户端和服务端可以同时进行双向通信,强调同时.双向通信 WebSocket可以应用于即时通信等场景,比如现在直播很火热,直播中的弹幕也可以使用WebSocket去实现. WebSocket的协议内容可以见The WebSocket Protocol,讲得最全面的官方说明.简单介绍可以见维基百科WebSocket 在Andro

Android中脱离WebView使用WebSocket实现群聊和推送功能

WebSocket是Web2.0时代的新产物,用于弥补HTTP协议的某些不足,不过他们之间真实的关系是兄弟关系,都是对socket的进一步封装,其目前最直观的表现就是服务器推送和聊天功能.更多知识参考:如何理解 TCP/IP, SPDY, WebSocket 三者之间的关系? 今天的重点是讲如何在Android中脱离WebView使用WebSocket,而不是在Web浏览器使用,如果是在Web浏览器中使用,网上已经太多教程.框架和demo,没必要讲. 到目前为止我个人认为安卓端比较好用的WebS

WebSocket学习笔记IE,IOS,Android等设备的兼容性问

一.背景 公司最近准备将一套产品放到Andriod和IOS上面去,为了统一应用的开发方式,决定用各平台APP嵌套一个HTML5浏览器来实现,其中数据通信,准备使用WebSocket的方式.于是,我开始在各大浏览器上测试. 二.协议分析 2.1 WebSocket的请求包 首先把原来做Socket通信的程序拿出来,跟踪下浏览器在WebSocket应用请求服务端的时候发的数据包的内容: IE11: GET /chat HTTP/1.1 Origin: http://localhost Sec-Web

利用websocket实现android消息推送

前段时间做一个项目,需要android客户端作为管理工具与web服务器后台实时交互,想了很多方法,包括androidpn.openfire+smack.xmpp协议,要么太繁琐,要么无法满足实时性.想来还是用socket,经人提醒想到了websocket. websocket协议是近些年随html5发展而诞生的,主要用于解决web服务器与客户端无法双向交互的问题.如今已经被W3C收入标准协议. 服务器支持:tomcat.jetty的最新版本都已支持websocket:如果不想更换现有服务器,也可

android websocket 应用

websocket 在实际的应用中不仅仅能做聊天应用,还可以利用websocket长连接保持数据的实时更新以及信息的推送. websocket 的实现的关键点 第一个:首先需要引入 java-websocket.jar 包, 这里我使用的版本时1.3.1. 接下来就开始了,不同的业务有不同的需求,我们根据业务需求封装一下websocket 请求 在runable中实例websocket对象,并在四个回掉函数中构建自己的业务逻辑, 接着定义send方法发送请求 ,定义一个接口用于接收服务端返回的数

Android WebSocket开发

一,在模块build.gradle中添加webSocket的依赖包 //WebSocket 依赖包 implementation 'com.neovisionaries:nv-websocket-client:2.2' 二,连接webSocket try { WebSocket ws = new WebSocketFactory().createSocket(url, CONNECT_TIMEOUT) //ws地址,和设置超时时间 .setFrameQueueSize(FRAME_QUEUE_S