[英]socket.io client connects to the server but does not communicate
我正在android上做一個簡單的聊天功能,客戶端可以進入一個組並將消息發送到該組。 在客戶端,從日志記錄中可以看到我已連接到套接字,但是似乎沒有發生任何通信。 另一方面,在客戶端,我沒有收到任何錯誤,而且我看到的所有日志也都按照我期望的順序放置。 我只是不知道套接字是如何連接的,代碼看起來還不錯,但是客戶端從不與服務器通信。
下面是一個名為socketioHandler.js的文件中的客戶端代碼
exports.ioConnections = io => {
io.on('connection', function(socket){
console.log('user connected');
// join a group
socket.on('join group', function(object){
console.log("room: " + object.groupId);
socket.join(object.groupId);
io.local.emit('join group', "joined"); //send message to user
});
// send a message to the group
socket.on('send message', function(object){
console.log(' smessage: ' + object.message);
socket.broadcast.to(object.groupId).emit('send message', {message: object.message});
updateGroupConversation(object);
});
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
}
下面是我的片段中的代碼
private Socket mSocket;
{
Log.i(TAG, "creating socket");
try {
mSocket = IO.socket(Constants.API_URL);
} catch (URISyntaxException e) {
e.printStackTrace();
System.out.print("something happened\n");
}
Log.i(TAG, "created socket!");
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSocket.connect();
mSocket.on("join group", onJoined);
mSocket.on("send message", onMessageReceive);
attemptJoinRoom();
}
private Emitter.Listener onJoined = new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.e("Response", "in joined");
}
};
private void attemptJoinRoom() {
JSONObject object = new JSONObject();
try {
object.put("groupId", getArguments().getString("groupID"));
} catch (JSONException e) {
e.printStackTrace();
}
mSocket.emit("join group", object);
Log.i(TAG,"joined group");
}
編輯:登錄服務器端看起來像這樣
2018-04-30T12:52:31.828761+00:00 app[web.1]: user connected
2018-04-30T12:52:32.133621+00:00 heroku[router]: at=info method=POST path="/socket.io/?EIO=3&transport=polling&sid=CVu2daOEA0uT1wBSAAAG" host=group-app-android.herokuapp.com request_id=157c6758-b655-4e10-ab43-9190bf41a1f5 fwd="91.230.41.206" dyno=web.1 connect=3ms service=4ms status=200 bytes=208 protocol=https
2018-04-30T12:52:32.145397+00:00 heroku[router]: at=info method=GET path="/socket.io/?EIO=3&transport=polling&sid=CVu2daOEA0uT1wBSAAAG" host=group-app-android.herokuapp.com request_id=74c64b44-edc4-4938-9516-98031387cde4 fwd="91.230.41.206" dyno=web.1 connect=0ms service=3ms status=200 bytes=256 protocol=https
2018-04-30T12:52:34.534160+00:00 heroku[router]: at=info method=GET path="/socket.io/?EIO=3&transport=polling&sid=CVu2daOEA0uT1wBSAAAG" host=group-app-android.herokuapp.com request_id=dbc4f21a-38bb-430f-be4f-068279f4d80f fwd="91.230.41.206" dyno=web.1 connect=1ms service=2175ms status=200 bytes=225 protocol=https
編輯: mSocket.connected()
在客戶端的mSocket.connect()
之后mSocket.connect()
返回false。 這沒有任何意義,因為我確實在服務器端連接了用戶。
問題是在build.gradle
中進行了修改。
我弄亂了其中一個目錄,決定重新創建目錄並重新克隆一個倉庫。 在此過程中,因為我是android的build.gradle
,所以當我單擊一些按鈕時,Android Studio會自動對build.gradle
進行修改。
我將build.gradle
恢復為以前的狀態,問題已解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.