无法在 Android 客户端和 Node.js socket.io 服务器之间通信

杰米

我已经看过很多关于这方面的教程,但它们似乎都不起作用,所以不知道是服务器、客户端还是我网络上的某些东西阻止了它,我不知道,所以我来这里寻求帮助。

仅供参考,这是主要基于的教程:https : //socket.io/blog/native-socket-io-and-android/

所以这是我的服务器。目前它应该做的就是检测用户何时连接,然后检测用户发送消息并将它们发送回所有客户端。

索引.js

const express = require("express");
const app = express();
const path = require("path");
const server = require("http").createServer(app);
const io = require("socket.io")(server);

server.listen(3000, () => {
    console.log("Server listening at 3000");
});

app.use(express.static(path.join(__dirname, "public")));


io.on("connection", (socket) => {
    console.log("User connected");

   socket.on("new message", (data) => {
       console.log("New message" + data)

       socket.emit("new message", {
           message: data
       });
   })
});

我的 Android 客户端由 3 个类组成。但是为了尽量缩短这个时间,我将只包含其中的 2 个,就好像可以在这些中找到问题一样,它可以在第 3 个中修复。

这是在开始时启动的内容,只需按下按钮即可将您带到主要的“聊天”部分,但单击按钮后,服务器应记录连接,但控制台中不会出现任何内容。所以我只能假设套接字连接由于某种原因不起作用。你也可以忽略昵称,我还没有实现,一直试图让主要部分先工作。

主活动.java

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;

import io.socket.client.Socket;

public class MainActivity extends AppCompatActivity {

    private EditText nickname;
    private Button enterChat;

    private Socket mSocket;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        nickname = findViewById(R.id.nickname);
        enterChat = findViewById(R.id.enterChat);

        ChatApplication app = (ChatApplication) getApplication();
        mSocket = app.getSocket();
        mSocket.connect();

        enterChat.setOnClickListener(v -> {
            mSocket.emit("connection");
            Intent i = new Intent(MainActivity.this, ChatActivity.class);
            i.putExtra("name", nickname.getText().toString());
            startActivity(i);
        });
    }
}

这只是为了能够从任何其他活动中获取 Socket。

聊天应用程序

import android.app.Application;

import java.net.URISyntaxException;

import io.socket.client.IO;
import io.socket.client.Socket;

public class ChatApplication extends Application {
    private Socket mSocket;
    {

        try {
                                      //My IPv4 address here
            mSocket = IO.socket("http://xxx.xxx.x.xxx:3000");
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }

    public Socket getSocket() {
        return mSocket;
    }
}

任何帮助表示赞赏:)

杰米

发现问题,我需要把这个添加到AndroidManifest.xml

<application
    ...
    android:usesCleartextTraffic="true"
    ...
</application>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

socket.io服务器的Node.js客户端

node.js / socket.io-跟踪客户端

使用socket.io和C#客户端与Compute Engine上的Node.js服务器代码进行通信

Android客户端未从Node.js服务器接收socket.io消息

客户端无法找到socket.io.js

从客户端向服务器发送虚假的socket.io请求(node.js / socket.io)

Node.js将远程尾部和socket-io生成到客户端

将前端本机Websocket客户端连接到Node.js Socket.io服务器

客户端断开连接并再次连接服务器后,是否在Socket.io和node.js上重新发布了Socket ID?

socket.io服务器可以与非socket.io客户端通信吗

无法在react-native中使用socket.io在客户端和服务器之间发送消息

从服务器(`node.js`)而不是从客户端触发`socket.io`事件

Socket.io-在服务器和客户端之间同步数据

Socket.io Node Js服务器和React js客户端未连接

无法从Android socket.io 2客户端连接到node.js socket.io 3.x服务器

无法使用带有NodeJS,ReactJS和Express的socket.io在服务器和客户端之间建立连接

使用node.js + socket.io + express / ejs将数据从客户端传递到服务器

Node.js服务器和android客户端

node.js socket.io无法发送到特定客户端

在Node.js上使用soket.io进行服务器和客户端之间的连接

Express,用于浏览器客户端和node.js客户端的socket.io服务器

Node.js socket.io-服务器上看不到客户端发出的消息

socket.io服务器与客户端之间无通信

无法使用 socket.io 在 nodejs 服务器和客户端之间通信我的数据

(Restify,ReactJS,Node.js) Socket.io 客户端状态断开,服务器记录连接

Socket.io 客户端无法与 websocket 服务器配合使用

Socket.IO:Swift 客户端连接到 Node.js 服务器但服务器不会注册连接?

无法在玩笑中运行 socket.io 服务器以测试 React 中的客户端套接字通信

socket.io 客户端无法连接和接收服务器发出的消息