public class MainActivity extends Activity {
public TextView tv;
public EditText nickText;
public EditText msgText;
public ScrollView sv;
public String nickName;
public String text;
public Button cB;
public Button eB;
public Button sB;
public Button rB;
public PrintWriter streamOut = null;
public BufferedReader streamIn = null;
public void msgview(String msg){
tv.append(msg+"\n");
}
HubConnection conn;
HubProxy proxy;
Logger logger;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nickText = (EditText)findViewById(R.id.connText);
sv = (ScrollView)findViewById(R.id.scrollView1);
tv = (TextView)findViewById(R.id.text01); //sv안에 있음
msgText = (EditText)findViewById(R.id.chatText);
cB=(Button)findViewById(R.id.connBtn);
eB=(Button)findViewById(R.id.closeBtn);
sB=(Button)findViewById(R.id.sendBtn);
rB=(Button)findViewById(R.id.refrsh);
Logger logger = new Logger() {
@Override
public void log(String message, LogLevel level) {
//tv.append(message+"\n");
//sv.fullScroll(ScrollView.FOCUS_DOWN);
}
};
conn = new HubConnection("http://10.1.111.156:8080", "", true, logger);
proxy = conn.createHubProxy("MyHub");
proxy.subscribe(new Object() {
@SuppressWarnings("unused")
public void addMessage(String name, String message) {
msgview(name + ": " + message+"\n");
tv.postInvalidate();
}
});
Button cB=(Button)findViewById(R.id.connBtn);
eB.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
conn.start();
//sv.fullScroll(ScrollView.FOCUS_DOWN);
}
});
Button eB=(Button)findViewById(R.id.closeBtn);
eB.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
conn.stop();
}
});
Button sendBtn=(Button)findViewById(R.id.sendBtn);
sendBtn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
proxy.invoke("addMessage",nickText.getText().toString(),msgText.getText().toString());
}
});
Button rB=(Button)findViewById(R.id.refrsh);
rB.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
tv.refreshDrawableState();
tv.invalidate();
sv.fullScroll(sv.FOCUS_DOWN);
}
});
conn.error(new ErrorCallback() {
@Override
public void onError(Throwable error) {
error.printStackTrace();
}
});
conn.received(new MessageReceivedHandler() {
@Override
public void onMessageReceived(JsonElement json) {
}
});
}
public void connBtnClick(View v) {
switch(v.getId()){
case R.id.connBtn :
conn.start();
break;
case R.id.closeBtn :
conn.stop();
break;
case R.id.sendBtn :
proxy.invoke("addMessage");
break;
}
}
signalr hub connection 을 쓰고 있는데 연결도 잘 되고 서버로 메세지도 잘 전달이 되는데 이상하게 첫번째 메세지가 텍스트뷰에 뜨지 않고 두번째 메세지부터 떠요.
쓰레드 때문인것 같기도 한데 초보라서 뭐 어떻게 해야할지 모르겠네요..