• 20-07-2023, 21:56:45
    #1
    Merhaba arkadaşlar flutter ile socket.io kullanıyorum. Herşey sorunsuz çalışıyor flutter tarafından server tarafına istek atıyorum yakalıyorum serverda vs. Ama şöyle bir sorunum var. Server tarafından gelen istekleri sadece isteğin gittiği cihazdan yakalayabiliyorum. Yani şöyle. A cihazından socketin server tarafına istek attım ve server tarafında tekrar emit ettim. Buraya kadar herşey sorunsuz. Fakat on methodu ile flutter tarafında dinlediğimde sadece a cihazından yakalayabiliyorum b cihazından yakalanmıyor istek. Umarım anlatabilmişimdir. Daha önce yapan arkadaşlar varsa yardımcı olabilirse çok sevinirim. Aşağıya kodları bırakıyorum.



    Bu Nodejs yani server tarafına ait kod



    Bu flutter tarafından server tarafına socket isteği attığım kod

    Buda class'a ait kodlar

    Buda socket tarafını dinlediğim kodlar
  • 20-07-2023, 22:08:52
    #2
    Sorununuzu anladım. Socket.io ile bağlantı sağladıktan sonra server tarafından gelen istekleri tüm cihazlarda dinlemek için broadcast özelliğini kullanabilirsiniz. Bu şekilde, server tarafından gelen veriler tüm bağlantılı cihazlara iletilir.
    Node.js (Server tarafı):
    const io = require('socket.io')(server);
    
    io.on('connection', (socket) => {
      console.log("Bağlantı var");
      
      socket.on("message", async function (data) {
        console.log(data);
        // Broadcast ile tüm cihazlara gönder
        io.emit("messagea", data);
      });
    });
    Flutter (Client tarafı):

    import 'package:flutter/material.dart';
    import 'package:socket_io_client/socket_io_client.dart' as IO;
    
    class SocketHelper {
      static IO.Socket? socket;
      static String serverip =
          Platform.isIOS ? "http://localhost:3000" : "http://your_server_ip:3000";
    
      static void connected() {
        socket = IO.io(serverIp, IO.OptionBuilder()
            .setTransports(["websocket"])
            .enableAutoConnect()
            .build());
        init();
        listen();
      }
    
      static void init() {
        socket!.connect();
        socket!.onConnect((data) {
          print("iPhone socket'e bağlandı");
        });
      }
    }
    
    void main() {
      SocketHelper.connected();
    
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: MyHomePage(),
        );
      }
    }
    
    class MyHomePage extends StatelessWidget {
      void sendMessage() {
        SocketHelper.socket!.emit("message", "cdscd");
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text("Socket.io Test"),
          ),
          body: Center(
            child: ElevatedButton(
              onPressed: sendMessage,
              child: Text("Mesaj Gönder"),
            ),
          ),
        );
      }
    }
    Olabilir Aslında ?
  • 20-07-2023, 22:11:49
    #3
    OmerAti adlı üyeden alıntı: mesajı görüntüle
    Sorununuzu anladım. Socket.io ile bağlantı sağladıktan sonra server tarafından gelen istekleri tüm cihazlarda dinlemek için broadcast özelliğini kullanabilirsiniz. Bu şekilde, server tarafından gelen veriler tüm bağlantılı cihazlara iletilir.
    Node.js (Server tarafı):
    const io = require('socket.io')(server);
    
    io.on('connection', (socket) => {
      console.log("Bağlantı var");
      
      socket.on("message", async function (data) {
        console.log(data);
        // Broadcast ile tüm cihazlara gönder
        io.emit("messagea", data);
      });
    });
    Flutter (Client tarafı):

    import 'package:flutter/material.dart';
    import 'package:socket_io_client/socket_io_client.dart' as IO;
    
    class SocketHelper {
      static IO.Socket? socket;
      static String serverip =
          Platform.isIOS ? "http://localhost:3000" : "http://your_server_ip:3000";
    
      static void connected() {
        socket = IO.io(serverIp, IO.OptionBuilder()
            .setTransports(["websocket"])
            .enableAutoConnect()
            .build());
        init();
        listen();
      }
    
      static void init() {
        socket!.connect();
        socket!.onConnect((data) {
          print("iPhone socket'e bağlandı");
        });
      }
    }
    
    void main() {
      SocketHelper.connected();
    
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: MyHomePage(),
        );
      }
    }
    
    class MyHomePage extends StatelessWidget {
      void sendMessage() {
        SocketHelper.socket!.emit("message", "cdscd");
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text("Socket.io Test"),
          ),
          body: Center(
            child: ElevatedButton(
              onPressed: sendMessage,
              child: Text("Mesaj Gönder"),
            ),
          ),
        );
      }
    }
    Olabilir Aslında ?
    hocam çok teşekkür ederim ufacık detay gözümden kaçmış, socket.emit yapınca sadece istek gelen cihaza emit atıyor. Valla 2 gündür uğraşıyorum hocam çok sağolun