从网络上搜索到的Demo,自己进行了稍微的改动
Signala类库从https://github.com/erizet/SignalA获得,不过相关引用有错误,需要手动修正。
package com.zsoft.SignalADemo;
import android.app.Activity;
import org.json.JSONArray;
import com.zsoft.signala.hubs.*;
import com.zsoft.signala.hubs.HubConnection;
import com.zsoft.signala.transport.StateBase;
import com.zsoft.signala.transport.longpolling.*;
import android.content.OperationApplicationException;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
/**
* Created by King on 2016/8/3.
*/
public class chatHubActivity extends Activity {
private final static String TAG = "KING";
private final static String HUB_URL = "http://192.168.1.110:8022/signalr/hubs";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chat_hub);
beginConnect();
}
/**
* hub链接
*/
private HubConnection conn = new HubConnection(HUB_URL, this, new LongPollingTransport()) {
@Override
public void OnError(Exception exception) {
Log.d(TAG, "OnError=" + exception.getMessage());
}
@Override
public void OnMessage(String message) {
Log.d(TAG, "message=" + message);
}
@Override
public void OnStateChanged(StateBase oldState, StateBase newState) {
Log.d(TAG, "OnStateChanged=" + oldState.getState() + " -> " + newState.getState());
}
};
/*
* hub代理 panderman 2013-10-25
*/
private IHubProxy hub = null;
/**
* 开启推送服务 panderman 2013-10-25
*/
private void beginConnect() {
try {
//服务器端的HUB为ChatHub
hub = conn.CreateHubProxy("ChatHub");
} catch (OperationApplicationException e) {
e.printStackTrace();
}
hub.On("addNewMessageToPage", new HubOnDataCallback() {
@Override
public void OnReceived(JSONArray args) {
EditText chatText = (EditText) findViewById(R.id.chat_text);
//chatText.setText(args.toString());
for (int i = 0; i < args.length(); i++) {
chatText.append(args.opt(i).toString());
}
}
});
conn.Start();
}
}
从网页上输入相关信息,android打印日志输出,如下