基于.net 和 Android 通信 ,用了SianalA 。资料找的心累,都是抄来抄去的。也遇到了不少问题,写下总结,也希望别人少走弯路。
个人愚见,欢迎批评。有问题评论,可以帮上你最好。
问题一,SignalA的HubConnection构造方法不接收参数。####
需求: 项目中直播的弹幕需要传入房间号,以及个人信息。
HubConnection.class
public HubConnection(String url, Context context, ITransport transport)
{
super(url, context, transport); setUrl(GetUrl(url, true));
}
HubConnection的父类ConnectionBase
public ConnectionBase(String url, Context context, ITransport transport, String queryString ){
this(url, context, transport);
setQueryString(queryString);
}
解决方法:修改源码,没有直接引入dependencies引入,下载代码引入library依赖。
添加了构造HubConnection的带参构造方法:######
public HubConnection(String url, Context context, ITransport transport,String queryString) {
super(url, context, transport,queryString);
setUrl(GetUrl(url, true));}
疑问1. 为什么不用直接用ConnectionBase?
因为后面有些方法还是要用到子类的HubConnection的方法等。
疑问2.ConnectionBase里面有setQueryParams,为啥要构造?
setQueryParams方法私有,HubConnection拿不到。
综合来看还是构造比较好。
问题二,SignalA Android端发送信息给服务器方####
public void sendMessage(String danmu) {
String jsonMessage = "{\"H\":\"chat\",\"M\":\"send\",\"A\":[\"7eea1569-4c71-468f-991c-10490af00b4d\",\""+danmu+"\",1],\"I\":1}";
if(conn!=null)
{
conn.Send(jsonMessage, new SendCallback() {
public void OnError(Exception ex) {
Toast.makeText(StreamingBaseActivity.this, "Error when sending: " + ex.getMessage(), Toast.LENGTH_LONG).show(); }
public void OnSent(CharSequence message) {
Toast.makeText(StreamingBaseActivity.this, "Sent: " + message, Toast.LENGTH_SHORT).show(); }
});
}
}
。。。。待续
网友评论