node.js - 将 Flutter 连接到本地 Nodejs 套接字服务器

标签 node.js sockets flutter dart socket.io

我正在从我的应用程序中开发一个聊天部分,并使用 Node js 和 socket.io 编写了一个基本的套接字服务器。

我通过此网站测试了此 API:https://www.websocket.org/echo.html

这是一些源代码:

  var server = require('http').Server(app)
  var io = require('socket.io')(server);

  app.use(bodyParser.urlencoded({
    extended: true,
    limit: '50mb',
  })); 
  app.use(bodyParser.json());
  app.use("/f",express.static(__dirname+"/files"));
  app.use('/api', listenRoutes);


  io.on('connection', function(socket){
    console.log('a user connected');
    socket.on('disconnect', function(){
      console.log('user disconnected');
    });
  });

  server.listen(port);


  console.log('Bukalemun RESTful API server started on: ' + port);

我的 API 服务于 http://localhost:3000

但是,我无法将此 API 连接到我的 flutter 应用程序。我使用了各种类型的包,包括原始的 dart.io,但从未成功。

这是连接我的 API 的函数:

import 'dart:io';

  void setupSocketConnections() async {

    Socket socket = await Socket.connect('10.0.2.2', 3000);

    print('connected');

    // listen to the received data event stream
    socket.listen((List<int> event) {
      print(utf8.decode(event));
    });

    // send hello
    socket.add(utf8.encode('hello'));

    // wait 5 seconds
    await Future.delayed(Duration(seconds: 5));

    // .. and close the socket
    socket.close();

  } 

如果有任何建议,我将不胜感激。

最佳答案

尝试使用这个,您可能已经使用了一些带有套接字的 header 。

'transports': ['websocket', 'polling']

pubspec.yaml 中使用此依赖项

[socket_io_client: ^0.9.7+2][1]

我们将使用此代码在您的 flutter 应用程序中进行连接。

connectToSocket() {
socket = IO.io("http://your url/", <String, dynamic>{
  'transports': ['websocket', 'polling'],
});
socket.connect();

}

希望它对您有用!它对我有用。

关于node.js - 将 Flutter 连接到本地 Nodejs 套接字服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57738813/

相关文章:

javascript - react-native 构建错误(开发服务器返回响应错误代码 : 500)

javascript - Sails.js 如何修改路由以解释逗号分隔的 id 列表

python - 断开连接后在python中重新连接到PiCamera流

Flutter 设置状态不更新 bottomsheet 函数中的变量值

node.js - http响应的Gzip解压

javascript - Node.js 休息框架

java - Android 套接字接收问题

c - 当通过 ip_mreqn 设置多播传出接口(interface)时,Sendto 返回 -1 和 errno 22(无效参数)

flutter - 容器缩小到他 child 的大小

dart - 第一次点击 flutter 后如何禁用按钮?