안 드 로 이 드 는 웹 소켓 프로 토 콜 을 이용 하여 서버 와 통신 합 니 다.
5633 단어 Android
안 드 로 이 드 자체 에 웹 소켓 라 이브 러 리 가 없습니다.직접 다운로드 해 야 합 니 다. http://autobahn.ws/android/downloads
클 라 이언 트 코드...
인터페이스 레이아웃 은 스스로 쓰 고 간단 한 button 두 개 입 니 다.
package com.example.test;
import com.example.test.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import de.tavendo.autobahn.WebSocketConnection;
import de.tavendo.autobahn.WebSocketConnectionHandler;
import de.tavendo.autobahn.WebSocketException;
public class MainActivity extends Activity implements OnClickListener {
private Button bt;
private EditText ed_name;
private EditText ed_text;
private Button bt1;
WebSocketConnection wsc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt = (Button) findViewById(R.id.bt);
ed_name = (EditText) findViewById(R.id.ed_name);
ed_text = (EditText) findViewById(R.id.ed_text);
bt1 = (Button) findViewById(R.id.bt1);
bt.setOnClickListener(this);
bt1.setOnClickListener(this);
wsc = new WebSocketConnection();
}
private void connect() {
System.out.println(" websocket///");
try {
wsc.connect("ws://192.168.1.245:8080/DriveServer/mainservlet",
new WebSocketConnectionHandler() {
@Override
public void onBinaryMessage(byte[] payload) {
System.out.println("onBinaryMessage size="
+ payload.length);
}
@Override
public void onClose(int code, String reason) {
System.out.println("onClose reason=" + reason);
}
@Override
public void onOpen() {
System.out.println("onOpen");
showtext(" ");
// wsc.sendTextMessage("Hello!");
// wsc.disconnect();
}
@Override
public void onRawTextMessage(byte[] payload) {
System.out.println("onRawTextMessage size="
+ payload.length);
}
@Override
public void onTextMessage(String payload) {
System.out.println("onTextMessage" + payload);
showtext(payload);
}
});
} catch (WebSocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int id = v.getId();
switch (id) {
case R.id.bt :
wsc.sendTextMessage(" , ws ");
break;
case R.id.bt1 :
connect();
break;
default :
break;
}
}
private void showtext(String msg) {
Toast.makeText(this, msg, 0).show();
}
}
다음은 서버 코드:
Jetty 7 자체 웹 소켓 라 이브 러 리 를 사용 합 니 다.
package com.websocket;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.websocket.WebSocket;
import org.eclipse.jetty.websocket.WebSocket.OnTextMessage;
import org.eclipse.jetty.websocket.WebSocketServlet;
public class ChatWebSocketServlet extends WebSocketServlet {
private static final long serialVersionUID = 911879078000755859L;
private List list = new ArrayList();
class MyWebSocket implements OnTextMessage {
private String userName = " ";
public MyWebSocket(String userName) {
if (userName != null && userName.length() > 0) {
this.userName = userName;
}
}
private Connection conn;
public void onClose(int arg0, String arg1) {
// TODO Auto-generated method stub
System.out.println("onOpen 。。。。。。。。" + arg1 + " " + arg0);
list.remove(this);
}
public void onOpen(Connection arg0) {
// TODO Auto-generated method stub
System.out
.println("onOpen 。。。。。。。。。。。。" + arg0.getMaxIdleTime());
this.conn = arg0;
if (!list.contains(arg0)) {
list.add(this);
} else {
System.out.println(" ");
}
System.out.println(".." + list.size());
}
public void onMessage(String arg0) {
String toname = arg0.substring(0, 3);
System.out.println("toname-->" + toname);
try {
list.get(0).getConn()
.sendMessage(arg0.substring(3));
System.out.println(" " + arg0.substring(3));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private Connection getConn() {
return this.conn;
}
}
public WebSocket doWebSocketConnect(HttpServletRequest arg0, String arg1) {
// TODO Auto-generated method stub
String name = "";
name = arg0.getParameter("username");
System.out.println(name + "is connected");
return new MyWebSocket(name);
}
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
super.service(request, response);
}
}
교 류 를 환영 합 니 다.전재 출처 를 밝 혀 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.