【发布时间】:2014-12-11 09:47:09
【问题描述】:
有没有人有任何示例代码来演示在 socket.io 的 java 客户端接收消息?
另外,有没有关于从同一个 socket.io java 客户端发送文件/二进制文件/图片的示例? (基本上是来自 java 而不是 javascript 客户端的示例代码)
android java客户端的版本可以在这里获取(这个版本号称可以和socket.io 1.0及以后一起使用)(好像是最新版本) https://github.com/nkzawa/socket.io-client.java
目前只允许我初始化连接的示例代码,服务器能够获取我的传入连接事件,并且 java socket.io 客户端能够发送基本的发出消息。但是,对于如何从服务器广播或从另一个网站用户发出的消息获取更新,并没有简单的示例。
示例代码仅供参考:
package com.sample.d10132014a;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URISyntaxException;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import com.github.nkzawa.socketio.client.*; // java socket io client
import com.github.nkzawa.socketio.client.Socket;
import com.github.nkzawa.emitter.Emitter;
import com.github.nkzawa.engineio.client.*; // java engine io client
import com.github.nkzawa.engineio.client.transports.*;
public class MainActivity extends Activity {
public static String internalPath; // internal storage path
public static String fileName; // the file name
private Socket socket; // socket object
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
try
{
socket = IO.socket("http://YOURSERVERIP:3000");
socket.connect(); // initiate connection to socket server
socket.emit("chat message", "From Android to server: 1st outgoing message");
}
catch (URISyntaxException e)
{
e.printStackTrace();
}
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener()
{
@Override
public void call(Object... args) {
Log.d("socketio", "socket connected");
socket.emit("chat message", "even connect: message sent from android to socketio server");
//socket.disconnect(); // why is there a disconnect here?
}
}).on("chat message", new Emitter.Listener() {
@Override
public void call(Object... arg0) {
// TODO Auto-generated method stub
JSONObject obj = (JSONObject)arg0[0];
Log.d("socketio", "message back: "+obj.toString());
Log.d("socketio", "incomming chat message: " + obj.toString() + arg0 + arg0[0] + arg0[1]); // trying to test which variable holds the message
}
}).on(Socket.EVENT_MESSAGE, new Emitter.Listener() {
@Override
public void call(Object... arg0) {
// TODO Auto-generated method stub
Log.d("socketio", "socket event message" + arg0);
socket.emit("chat message", "android to server from event message");
}
});
// 2nd segment test without connecting to 1 long method
socket.on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener()
{
@Override
public void call(Object... arg0) {
// TODO Auto-generated method stub
Log.d("socketio", "socket event connect error");
socket.emit("chat message", "android to server: socket event connect error");
}
});
socket.on(Socket.EVENT_MESSAGE, new Emitter.Listener() {
@Override
public void call(Object... arg0) {
// TODO Auto-generated method stub
Log.d("socketio", "socket event message" + arg0);
socket.emit("chat message", "android to server from event message");
}
});
setContentView(R.layout.activity_main);
} // ending onCreate method
} // ending class
感谢阅读
【问题讨论】:
-
您找到解决问题的方法了吗?我现在遇到了完全相同的问题