【问题标题】:Connecting Flutter to the a local nodejs socket server将 Flutter 连接到本地 nodejs 套接字服务器
【发布时间】:2020-01-04 10:05:54
【问题描述】:

我正在开发我的应用程序中的聊天部分,并使用节点 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 连接到我的颤振应用程序。我使用了各种类型的包,包括原始的 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();

  } 

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

【问题讨论】:

  • 你的控制台有错误吗?
  • @Peter 不,没有,我只是没有从我的 api 获得“用户连接”日志

标签: node.js sockets flutter dart socket.io


【解决方案1】:

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

'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();

}

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

【讨论】:

  • 你的回答不好理解。
  • 如果您需要我的代码,请告诉我,以便它可以帮助您
  • 是的! “轮询”传输属性对我有用!
【解决方案2】:

我想这是与本地主机相关的错误。当我将服务器部署到 heroku 并通过此库 https://pub.dev/packages/adhara_socket_io#-readme-tab- 连接时,问题解决了

我在这里分享了我的基本客户端示例:https://github.com/isaturk66/dart_socket_client_example

服务器端是一个基本的 socket.io 服务器,他们的官方网站上已经有文档:https://socket.io/docs/

【讨论】:

  • 干得好伙计,但您不必远程部署它...您只需在您的机器上启用端口转发,您可以通过您的 chrome 浏览器或任何其他 chromium-基于浏览器,我不确定其他浏览器是否这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
相关资源
最近更新 更多