❶ android怎麼集成支持websocket的瀏覽器內核
首先看一段簡單的javascript代碼,該代碼調用了WebSockets的API。
[javascript] view
plainprint?
var ws = new WebSocket(「ws://echo.websocket.org」);ws.onopen = function(){ws.send(「Test!」); };ws.onmessage = function(evt){console.log(evt.data);ws.close();};ws.onclose = function(evt){console.log(「WebSocketClosed!」);};ws.onerror = function(evt){console.log(「WebSocketError!」);};
var ws = new WebSocket(「ws://echo.websocket.org」);
ws.onopen = function(){ws.send(「Test!」); };
ws.onmessage = function(evt){console.log(evt.data);ws.close();};
ws.onclose = function(evt){console.log(「WebSocketClosed!」);};
ws.onerror = function(evt){console.log(「WebSocketError!」);};
這份代碼總共只有5行,現在簡單概述一下這5行代碼的意義。
第一行代碼是在申請一個WebSocket對象,參數是需要連接的伺服器端的地址,同http協議使用http://開頭一樣,WebSocket協議的URL使用ws://開頭,另外安全的WebSocket協議使用wss://開頭。
第二行到第五行為WebSocket對象注冊消息的處理函數,WebSocket對象一共支持四個消息
onopen, onmessage,
onclose和onerror,當Browser和WebSocketServer連接成功後,會觸發onopen消息;如果連接失敗,發送、接收數據失敗或者處理數據出現錯誤,browser會觸發onerror消息;當Browser接收到WebSocketServer發送過來的數據時,就會觸發onmessage消息,參數evt中包含server傳輸過來的數據;當Browser接收到WebSocketServer端發送的關閉連接請求時,就會觸發onclose消息。我們可以看出所有的操作都是採用消息的方式觸發的,這樣就不會阻塞UI,使得UI有更快的響應時間,得到更好的用戶體驗。
❷ android怎麼集成支持websocket的瀏覽器內核
Android端先導入Java-WebSocket-1.3.0.jar
然後創建WebSocketConnection 最好單獨搞出來一個類去搞,最後調用就行了
下面是我的代碼
你定義一個方法 直接調用
public void save(寫你要穿過去的參數){
wsC.connect(填寫你的url)
}
public void wsStart(String wsUrl) {
try {
wsC.connect( wsUrl, new WebSocketHandler()
{
@Override
❸ android中使用WebSocket傳遞數據
現在初步的發送 、接收 都可以實現了,但是還有很多問題!!!比如 穩定性 !!!(因為我們如果發送信息,不規律 或者長時間不發送,這個ws雖然開著,但是已經斷開連接了0.0)
現在穩定性算是差不多告一段落了,(給自己一個棒棒糖!)。
前段時間我們經理給我們說這個也會有問題的!!!(一個大棒槌過來了)
❹ android 怎麼與websocket 通訊
Android與伺服器通信通常採用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post兩種方式。至於Socket通信會在以後的博文中介紹。 HTTP協議簡介: HTTP (Hypertext Transfer Protocol ),是Web聯網的基礎,也是手機聯網常用的協議之一,HTTP協議是建立在TCP協議之上的一種協議。 HTTP連接最顯著的特點是客戶端發送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連接。從建立連接到關閉連接的過程稱為“一次連接”。在HTTP 1.0中,客戶端的每次請求都要求建立一次單獨的連接,在處理完本次請求後,就自動釋放連接。在HTTP 1.1中則可以在一次連接中處理多個請求,並且多個請求可以重疊進行,不需要等待一個請求結束後再發送下一個請求。 由於HTTP在每次請求結束後都會主動釋放連接,因此HTTP連接是一種“短連接”、“無狀態”,要保持客戶端程序的在線狀態,需要不斷地向伺服器發起連接請求。通常的做法是即使不需要獲得任何數據,客戶端也保持每隔一段固定的時間向伺服器發送一次“保持連接”的請求,伺服器在收到該請求後對客戶端進行回復,表明知道客戶端“在線”。若伺服器長時間無法收到客戶端的請求,則認為客戶端“下線”,若客戶端長時間無法收到伺服器的回復,則認為網路已經斷開。 基於HTTP1.0協議的客戶端在每次向伺服器發出請求後,伺服器就會向客戶端返回響應消息,在確認客戶端已經收到響應消息後,服務端就會關閉網路連接。在這個數據傳輸過程中,並不保存任何歷史信息和狀態信息,因此,HTTP協議也被認為是無狀態的協議。 HTTP1.1和HTTP1.0相比較而言,最大的區別就是增加了持久連接支持。當客戶端使用HTTP1.1協議連接到伺服器後,伺服器就將關閉客戶端連接的主動權交還給客戶端;也就是說,只要不調用Socket類的close方法關閉網路連接,就可以繼續向伺服器發送HTTP請求。 HTTP連接使用的是“請求—響應”的方式(2次握手),不僅在請求時需要先建立連接,而且需要客戶端向伺服器發出請求後,伺服器端才能回復數據。而Socket連接在雙方建立起連接後就可以直接進行數據的傳輸 HTTP協議的特點: 支持B/S及C/S模式; 簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。 靈活:HTTP 允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type 加以標記; 無狀態:HTTP 協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。 HTTP協議請求方法: 請求行中包括了請求方法,解釋如下: GET 請求獲取Request-URI 所標識的資源; POST 在Request-URI 所標識的資源後附加新的數據; HEAD 請求獲取由Request-URI 所標識的資源的響應消息報頭 PUT 請求伺服器存儲一個資源,並用Request-URI 作為其標識 DELETE 請求伺服器刪除Request-URI 所標識的資源; TRACE 請求伺服器回送收到的請求信息,主要用於測試或診斷 CONNECT 保留將來使用 OPTIONS 請求查詢伺服器的性能,或者查詢與資源相關的選項和需求 Get與Post請求區別: Post請求可以向伺服器傳送數據,而且數據放在HTML HEADER內一起傳送到服務端URL地址,數據對用戶不可見。而get是把參數數據隊列加到提交的URL中,值和表單內各個欄位一一對應, 例如(/s?w=%C4&inputT=2710) get 傳送的數據量較小,不能大於2KB。post傳送的數據量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。 get安全性非常低,post安全性較高。 項目結構圖: get方式: get機制用的是在URL地址裡面通過?號間隔,然後以name=value的形式給客戶端傳遞參數。所以首先要在Android工程下的AndroidGetTest.java中onCreate方法定義好其URL地址以及要傳遞的參數,然後通過URL打開一個HttpURLConnection鏈接,此鏈接可以獲得InputStream位元組流對象,也是往服務端輸出和從服務端返回數據的重要過程,而若服務端response.getInputStream.write()往andorid返回信息時候,就可以通過InputStreamReader作轉換,將返回來的數據用BufferReader顯示出來。 具體代碼如下: Servlet端接收數據並返回通知: Android端發送消息並接收Servlet返回的消息: post方式: post傳輸方式不在URL里傳遞,也正好解決了get傳輸量小、容易篡改及不安全等一系列不足。主要是通 過對HttpURLConnection的設置,讓其支持post傳輸方式,然後在通過相關屬性傳遞參數(若需要傳遞中文字元,則可以通過URLEncoder編碼,而在獲取端採用URLDecoder解碼即可)
❺ 跪求,android 能指定監聽事件WebSocket的庫,或者其他方法
在 weex 官網中websocket 的demo 設置 監聽直接給 onxxx事件 賦值就可以,
在Android死活不行,經查看android端源碼(WebSocketMole)後發現android的碼中onxx事件是一個方法,需要傳入一個JSCallback的值,
於是,將賦值方式改為 websocket.onmessage(function onmessage(){ /* your code... */ }) ,
❻ android怎麼和websocket連接
Android與伺服器通信通常採用HTTP通信方式和Socket通信方式,而HTTP通信方式又分get和post兩種方式。至於Socket通信會在以後的博文中介紹。HTTP協議簡介:HTTP(HypertextTransferProtocol),是Web聯網的基礎,也是手機聯網常用的協議之一
❼ android 什麼版本支持websocket
android使用websocket方法:
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 ) );
}
}
❽ android websocket 調用問題
android websocket 調用代碼如下:
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();
}
}