Javascript 我的应用程序未连接到Flatter中的socketIO后端服务器

Javascript 我的应用程序未连接到Flatter中的socketIO后端服务器,javascript,android,flutter,sockets,socket.io,Javascript,Android,Flutter,Sockets,Socket.io,我正在尝试使用socketIO作为我的应用程序的后端。我为相同的文件创建了一个文件server.js。我正在从一个教程中学习使用它,它对他有用,但对我不起作用。我甚至复制了整个代码,但这并不奏效。我提供了server.js的代码和用于此的颤振代码- 在我的UI上,它仍然显示“正在连接…”,而不是任何错误或“已连接”,我认为这是因为它显示的是初始化值(在initState()中初始化),而没有运行或发生任何其他事情 在39:12检查一下,我要完成 server.js文件- var express

我正在尝试使用
socketIO
作为我的应用程序的后端。我为相同的文件创建了一个文件
server.js
。我正在从一个教程中学习使用它,它对他有用,但对我不起作用。我甚至复制了整个代码,但这并不奏效。我提供了
server.js
的代码和用于此的颤振代码-

在我的UI上,它仍然显示“正在连接…”,而不是任何错误或“已连接”,我认为这是因为它显示的是初始化值(在initState()中初始化),而没有运行或发生任何其他事情

在39:12检查一下,我要完成

server.js
文件-

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var ios = require('socket.io')(server);

let ON_CONNECTION = 'connection';
let On_DISCONNECT = 'disconnet';

let EVENT_IS_USER_ONLINE = 'check_online';
let EVENT_SINGLE_CHAT_MESSAGE = 'single_chat_message';

let SUB_EVENT_RECIEVE_MESSAGE = 'recieve_message';
let SUB_EVENT_IS_USER_CONNECTED = 'is_user_connected';

let STATUS_MESSAGE_NOT_SENT = 1001;
let STATUS_MESSAGE_SENT = 1002;

let listen_port = 6000;
server.listen(listen_port);

const userMap = new Map();

ios.sockets.on(ON_CONNECTION, function (socket) {
    onEachUserConnection(socket);
});

function onEachUserConnection(socket) {
    print('------------');
    print('Connected => Socket ID: '+socket.id+', User: '+ stringifyToJson(socket.handshake.query));
}

function print(txt) {
    console.log(txt);
}

function stringifyToJson(data) {
    return JSON.stringify(data);
}
短发-

import 'dart:io';
import 'user.dart';
import 'package:adhara_socket_io/adhara_socket_io.dart';

class SocketUtils {
  

static String serverIP = Platform.isIOS ? 'http://localhost' : 'http://10.0.2.2';
  static const int SERVER_PORT=6000;
  static String _connectUrl = '$serverIP:$SERVER_PORT';

  static const String _ON_MESSAGE_RECEIVED = 'receive_message';
  static const String _IS_USER_ONLINE_EVENT = 'check_online';

  static const int STATUS_MESSAGE_NOT_SENT = 10001;
  static const int STATUS_MESSAGE_SENT = 10002;

  static const String SINGLE_CHAT = 'single_chat';

  User _fromUser;

  SocketIO _socket;
  SocketIOManager _manager;

  initSocket(User fromUser) async {
    this._fromUser = fromUser;
    print('Connecting... ${fromUser.name}');
    await init();
  }

  init() async {
    _manager=SocketIOManager();
    _socket= await _manager.createInstance(_socketOptions());
  }

  connectToSocket() {
    if(_socket==null) {
      print("Socket is null");
      return;
    }
    _socket.connect();
  }

  _socketOptions() {
    final Map<String, String> userMap = {
      'from': _fromUser.id.toString(),
    };
    return SocketOptions(_connectUrl,enableLogging: true, transports: [Transports.webSocket], query: userMap);
  }

  setOnConnectListener(Function onConnect) {
    _socket.onConnect.listen((data) {
      onConnect(data);
    });
  }

  setOnConnectionTimeOutListener(Function onConnectionTimeout) {
    _socket.onConnectTimeout.listen((data) {
      onConnectionTimeout(data);
    });
  }

  setOnConnectionErrorListener(Function onConnectionError) {
    _socket.onConnectError.listen((data) {
      onConnectionError(data);
    });
  }

  setOnErrorListener(Function onError) {
    _socket.onError.listen((data) {
      onError(data);
    });
  }

  setOnDisconnectListener(Function onDisconnect) {
    _socket.onDisconnect.listen((data) {
      onDisconnect(data);
    });
  }

  _closeConnection() {
    if(null!=_socket) {
      print("Closing Connection");
      _manager.clearInstance(_socket);
    }
  }
}

静态字符串serverIP=Platform.isIOS?“http://localhost' : 'http://10.0.2.2';
在文章开始时,您还没有告知服务器运行的位置。也不知道你的应用程序在哪里运行。
import 'package:flutter/material.dart';
import 'package:flutter_chat_app/socketIO_chat/chat_screen.dart';
import 'package:flutter_chat_app/socketIO_chat/global.dart';
import 'package:flutter_chat_app/socketIO_chat/login_screen.dart';
import 'package:flutter_chat_app/socketIO_chat/user.dart';

class ChatUsersScreen extends StatefulWidget {

  ChatUsersScreen() : super();
  static const String ROUTE_ID='chat_users_screen';

  @override
  _ChatUsersScreenState createState() => _ChatUsersScreenState();
}

class _ChatUsersScreenState extends State<ChatUsersScreen> {

  List<User> _chatUsers;
  bool _connectedToSocket;
  String _connectMessage;

  _openChatScreen(context) async {
    await Navigator.pushNamed(context, ChatScreen.ROUTE_ID);
  }

  _connectToSocket() async {
    print('Connecting Logged In User ${G.loggedInUser.name}, ${G.loggedInUser.id}');
    G.initSocket();
    await G.socketUtils.initSocket(G.loggedInUser);
    G.socketUtils.connectToSocket();
    G.socketUtils.setOnConnectListener(onConnect);
    G.socketUtils.setOnConnectionErrorListener(onConnectionError);
    G.socketUtils.setOnConnectionTimeOutListener(onConnectionTimeout);
    G.socketUtils.setOnDisconnectListener(onDisconnect);
    G.socketUtils.setOnErrorListener(onError);
  }

  onConnect(data) {
    print('Connected $data');
    setState(() {
      _connectedToSocket=true;
      _connectMessage="Message";
    });
  }

  onConnectionError(data) {
    print('OnConnectionError $data');
    setState(() {
      _connectedToSocket=false;
      _connectMessage="Connection Error";
    });
  }

  onConnectionTimeout(data) {
    print('OnConnectionTimeOut $data');
    setState(() {
      _connectedToSocket=false;
      _connectMessage="Connection Time Out";
    });
  }

  onDisconnect(data) {
    print('OnDisconnect $data');
    setState(() {
      _connectedToSocket=false;
      _connectMessage="Disconnected";
    });
  }

  onError(data) {
    print('OnError $data');
    setState(() {
      _connectedToSocket=false;
      _connectMessage="Connection Error";
    });
  }

  _openLoginScreen(context) async {
    await Navigator.pushReplacementNamed(context, LoginScreen.ROUTE_ID);
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _connectedToSocket=false;
    _connectMessage="Connecting";
    _chatUsers=G.getUsersFor(G.loggedInUser);
    _connectToSocket();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Center(
          child: Text(
            "Chat Users",
          ),
        ),
        actions: [
          IconButton(
            icon: Icon(
                Icons.close
            ),
            onPressed: () {
              _openLoginScreen(context);
            },
          ),
        ],
      ),
      body: Container(
        alignment: Alignment.center,
        padding: EdgeInsets.all(30.0),
        child: Column(
          children: [
            Text(
              _connectedToSocket ? 'Connected' : _connectMessage,
            ),
            Expanded(
              child: ListView.builder(
                itemCount: _chatUsers.length,
                itemBuilder: (context, index) {
                  User user = _chatUsers[index];
                  return ListTile(
                    onTap: () {
                      G.toChatUser=user;
                      _openChatScreen(context);
                    },
                    title: Text(user.name),
                    subtitle: Text('ID ${user.id} Email ${user.email}'),
                  );
                },
              ),
            ),
          ],
        ),
      ),
    );
  }
}
import 'package:flutter/material.dart';
import 'package:flutter_chat_app/socketIO_chat/chat_message_model.dart';
import 'package:flutter_chat_app/socketIO_chat/chat_title.dart';
import 'package:flutter_chat_app/socketIO_chat/global.dart';
import 'package:flutter_chat_app/socketIO_chat/user.dart';

class ChatScreen extends StatefulWidget {

  ChatScreen() : super();
  static const String ROUTE_ID='chat_screen';

  @override
  _ChatScreenState createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {

  List<ChatMessageModel> _chatMessages;
  User _toChatUser;
  UserOnlineStatus _userOnlineStatus;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _chatMessages=[];
    _toChatUser=G.toChatUser;
    _userOnlineStatus=UserOnlineStatus.connecting;
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Center(
          child: ChatTitle(toChatUser: _toChatUser, userOnlineStatus: _userOnlineStatus,),
        ),

      ),
      body: Container(
        alignment: Alignment.center,
        padding: EdgeInsets.all(30.0),
        child: Column(
          children: [
            Expanded(
              child: ListView.builder(
                itemCount: _chatMessages.length,
                itemBuilder: (context, index) {
                  ChatMessageModel _chatMessageModel = _chatMessages[index];
                  return Text(
                    _chatMessageModel.message,
                  );
                },
              ),
            ),
            _bottomChatArea(),
          ],
        ),
      ),
    );
  }

  _bottomChatArea() {
    return Container(
      padding: EdgeInsets.all(10.0),
      child: Row(
        children: [
          _chatTextArea(),
          IconButton(
            icon: Icon(
              Icons.send,
            ),
            onPressed: () {

            },
          ),
        ],
      ),
    );
  }

  _chatTextArea() {
    return Expanded(
      child: TextField(
        decoration: InputDecoration(
          enabledBorder: OutlineInputBorder(
            borderRadius: BorderRadius.circular(10.0),
          ),
          focusedBorder: OutlineInputBorder(
            borderRadius: BorderRadius.circular(10.0),
          ),
          filled: true,
          fillColor: Colors.white,
          contentPadding: EdgeInsets.all(10.0),
          hintText: "Type Message",
        ),
      ),
    );
  }
}
I/flutter ( 5213): Connecting Logged In User A, 1000
I/flutter ( 5213): Connecting... A
E/Adhara:SocketIOPlugin( 5213): Clearing instances
E/Adhara:SocketIOPlugin( 5213): Creating a new instance
D/Adhara:Socket( 5213): Creating socket with URL: http://10.0.2.2:6000
D/Adhara:Socket( 5213): Connecting to socket http://10.0.2.2:6000
W/lutter_chat_ap( 5213): Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (greylist,core-platform-api, reflection, allowed)
W/lutter_chat_ap( 5213): Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (greylist,core-platform-api, reflection, allowed)
W/lutter_chat_ap( 5213): Accessing hidden method Ldalvik/system/CloseGuard;->warnIfOpen()V (greylist,core-platform-api, reflection, allowed)
I/lutter_chat_ap( 5213): Thread[6,tid=5230,WaitingInMainSignalCatcherLoop,Thread*=0xe9400e10,peer=0x12fc1658,"Signal Catcher"]: reacting to signal 3
I/lutter_chat_ap( 5213): 
I/lutter_chat_ap( 5213): Wrote stack traces to tombstoned