這很簡單,根據文檔https://github.com/Red-Folder/bgs-core/wiki/Using-the-MyService-Sample:
該類提供後臺服務邏輯doWork。請注意,doWork不僅執行所需的邏輯(在這種情況下,它只是向logcat輸出Hello World消息),它還產生結果JSONObject。這一結果是通過返回的JSON提供給HTML/JavaScript的前端:
@Override
protected JSONObject doWork() {
JSONObject result = new JSONObject();
try {
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
String now = df.format(new Date(System.currentTimeMillis()));
String msg = "Hello " + this.mHelloTo + " - its currently " + now;
result.put("Message", msg);
Log.d(TAG, msg);
} catch (JSONException e) {
}
return result;
並根據此鏈接:http://autobahn.ws/android/gettingstarted.html
package de.tavendo.test1;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import de.tavendo.autobahn.WebSocketConnection;
import de.tavendo.autobahn.WebSocketException;
import de.tavendo.autobahn.WebSocketHandler;
public class Test1Activity extends Activity {
private static final String TAG = "de.tavendo.test1";
private final WebSocketConnection mConnection = new WebSocketConnection();
private void start() {
final String wsuri = "ws://192.168.1.132:9000";
try {
mConnection.connect(wsuri, new WebSocketHandler() {
@Override
public void onOpen() {
Log.d(TAG, "Status: Connected to " + wsuri);
mConnection.sendTextMessage("Hello, world!");
}
@Override
public void onTextMessage(String payload) {
Log.d(TAG, "Got echo: " + payload);
}
@Override
public void onClose(int code, String reason) {
Log.d(TAG, "Connection lost.");
}
});
} catch (WebSocketException e) {
Log.d(TAG, e.toString());
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start();
}
}
最後結合這些例子中,你有你自己的目標(運行WebSocket在後臺服務):
@Override
protected JSONObject doWork() {
try {
final String wsuri = "ws://echo.websocket.org/";
try {
mConnection.connect(wsuri, new WebSocketHandler() {
@Override
public void onOpen() {
Log.d(TAG, "Status: Connected to " + wsuri);
mConnection.sendTextMessage("Hello, world!");
}
@Override
public void onTextMessage(String payload) {
Log.d(TAG, "Got echo: " + payload);
try {
result.put("wsMessage",payload);
} catch (JSONException e) {
}
}
@Override
public void onClose(int code, String reason) {
Log.d(TAG, "Connection lost.");
}
});
} catch (WebSocketException e) {
Log.d(TAG, e.toString());
}
} catch (JSONException e) {
}
Log.d(TAG, result.toString());
return result;
}
Wow優秀的答案! –