我对flutter开发还是个新手。当从包socket_io: ^0.9.0+1中执行import 'package:socket_io/socket_io.dart';时,会出现上述错误
我正在尝试将node js后端套接字连接到flutter应用程序。我不使用模拟器,而是使用三星Tab作为外部设备。
这是我的客户端程序
void main() {
var io = new Server();
var nsp = io.of('/some');
nsp.on('connection', (Socket client) {
print('connection /some');
client.on('msg', (data) {
print('data from /some => $data');
client.emit('fromServer', "ok 2");
});
});
io.on('connection', (Socket client) {
print('connection default namespace');
client.on('msg', (data) {
print('data from default => $data');
client.emit('fromServer', "ok");
});
});
io.listen(3000);
// Dart client
IO.Socket socket = IO.io('http://localhost:3000');
socket.on('connect', (_) {
print('connect');
socket.emit('msg', 'test');
});
socket.on('event', (data) => print(data));
socket.on('disconnect', (_) => print('disconnect'));
socket.on('fromServer', (_) => print(_));
runApp(new MyApp());
}这是pubspec.ymal
: chat_app
description: A new Flutter project.
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# Read more about versioning at semver.org.
version: 1.0.0+1
environment:
sdk: ">=2.0.0-dev.68.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
socket_io: ^0.9.0+1
socket_io_client: ^0.9.1
http: ^0.12.0
reflectable: ^2.0.9
dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://www.dartlang.org/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true这是我的后端服务,它在节点中写得很好
const express = require('express')
const app = express()
var mongoose = require("mongoose")
var path = require('path');
var cors = require("cors");
users=[];
app.use(cors())
'use strict';
var jwt = require('jsonwebtoken');
var iss = "Blitzkrieg Software";
var sub = "joe@user.org";
var aud = "http://blitzkriegsoftware.net";
const fs = require('fs');
var privateKey = `-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCETEqGDNQQKnHp1HV3VNmbp30LP2ErB7b4BMQEbMN1YMSAVwll
jhVvxEs0fI6vax0vFUNLSbSPG4o4Kkrunc+tODUvYJbN7Ejv5lZptVvcfvyUJKBQ
N8NYTucxGyVhS8jiYbev7no5ZHoAGDlzTYunzfWiPJ+81lHVjgsEVwHIqwIDAQAB
AoGAbm17uv6UN9Yl9Uaose16IcmgvzWs9oze9ZCMySC72YrnGjUMG9+IFx2ipHHf
a56d4oH+BKbF9rnHGnB60UeaY0lQN/dYMk+s3xzyHAW1eKYfIaRyJujtG329VJii
Y5JK5Avfctn9/nP8za2Ncxl6qPrWxIQ+fE2/kSHTxsFJB3kCQQC/oQyjpmSH2p6c
aAO9H0p0ikjknEidPMxKnpGxqnpevR17OCKPFcKIXkZST23caG7iUhuLLw4B6DV6
KnvFJR2NAkEAsL0f+WzLIE5U/Jii2t0fupTs+iWkpgYX6BHlNi9HqffO4i+SHt4r
kizkjxqBexaHThgMF1txf+jl7T7hanHlFwJBAKll5tRr7QajXf8Je/SdSqZG8DUX
aqGE81srXcPe3hoNt5gLgZFXPQZrwGJW0Nk8gHkU+EBLsmhBK7T5BTy7mKkCQBej
I6ybNUt7znf9/gHhgwXUNyF5eVzPAdGC2zH0/tOnld7AV/2S3ybspCDTfa+1oqD6
LFvPWg2uW1nwh/tRgj8CQH8wTj5Nn0srrSeW4WUj90aJY4Ec0PQLdzAW8fSr/jdj
hYCQv/Cz9xxCyeTfZC37sahbyc5UbXNtsRH7saYxogQ=
-----END RSA PRIVATE KEY-----`;
var publicKey = `-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCETEqGDNQQKnHp1HV3VNmbp30LP2ErB7b4BMQEbMN1YMSAVwll
jhVvxEs0fI6vax0vFUNLSbSPG4o4Kkrunc+tODUvYJbN7Ejv5lZptVvcfvyUJKBQ
N8NYTucxGyVhS8jiYbev7no5ZHoAGDlzTYunzfWiPJ+81lHVjgsEVwHIqwIDAQAB
AoGAbm17uv6UN9Yl9Uaose16IcmgvzWs9oze9ZCMySC72YrnGjUMG9+IFx2ipHHf
a56d4oH+BKbF9rnHGnB60UeaY0lQN/dYMk+s3xzyHAW1eKYfIaRyJujtG329VJii
Y5JK5Avfctn9/nP8za2Ncxl6qPrWxIQ+fE2/kSHTxsFJB3kCQQC/oQyjpmSH2p6c
aAO9H0p0ikjknEidPMxKnpGxqnpevR17OCKPFcKIXkZST23caG7iUhuLLw4B6DV6
KnvFJR2NAkEAsL0f+WzLIE5U/Jii2t0fupTs+iWkpgYX6BHlNi9HqffO4i+SHt4r
kizkjxqBexaHThgMF1txf+jl7T7hanHlFwJBAKll5tRr7QajXf8Je/SdSqZG8DUX
aqGE81srXcPe3hoNt5gLgZFXPQZrwGJW0Nk8gHkU+EBLsmhBK7T5BTy7mKkCQBej
I6ybNUt7znf9/gHhgwXUNyF5eVzPAdGC2zH0/tOnld7AV/2S3ybspCDTfa+1oqD6
LFvPWg2uW1nwh/tRgj8CQH8wTj5Nn0srrSeW4WUj90aJY4Ec0PQLdzAW8fSr/jdj
hYCQv/Cz9xxCyeTfZC37sahbyc5UbXNtsRH7saYxogQ=
-----END RSA PRIVATE KEY-----`;
var exp = 24;
var signOptions = {
issuer : iss,
subject: sub,
audience: aud,
expiresIn: exp,
algorithm: "RS256"
};
var payload = { };
// Populate with fields and data
payload.field01 = "Data 01";
payload.field02 = "Data 02";
payload.field03 = "Data 03";
var token = jwt.sign(payload, publicKey, signOptions);
console.log("Token: " + token);
var decoded = jwt.decode(token, {complete: true});
console.log("Docoded Header: " + JSON.stringify( decoded.header));
console.log("Docoded Payload: " + JSON.stringify(decoded.payload));
app.use(express.static('public'))
app.use(cors());
app.get('/',(req,res)=>{
res.render('index')
res.status=600;
})
server = app.listen(3000,"0.0.0.0");
// app.get('/', function (req, res) {
// res.header("Access-Control-Allow-Origin", "*");
// res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
// res.writeHead(200, {'Content-Type': 'text/plain'});
// contents = fs.readFileSync("sliderImages.json", "utf8");
// console.log(path.join(__dirname, '/sliderImages.json'));
// res.end(contents);
// });
const io= require('socket.io')(server)
io.on('connection', (socket) => {
var dbUrl = 'mongodb://brad:1234@localhost:27017/bawa'
mongoose.connect(dbUrl ,{ useNewUrlParser: true }, (err,db) => {
// db.collection("customers").insertOne({"first_name":"gahsat","last_name":"assdf"}, function(err, res) {
// if (err) throw err;
// console.log("1 document inserted");
// db.close();
// });
// db.collection("customers").find({}, { projection: { _id: 0, first_name: 1, last_name: 1 } }).toArray(function(err, result) {
// if (err) throw err;
// console.log(result);
// db.close();
// });
console.log('Db connected',err);
})
console.info('New user connected'+socket.id)
//default username
socket.userId = "Anonymous"
//listen on change_username
socket.on('change_userId', (data) => {
console.info('change_userId: ' + data);
socket.userId = data.userId
})
socket.on('register', (data) => {
console.info('New user cregonnected '+socket.id)
console.info('register: ' + data);
socket.userId = data.userId
})
socket.on('disconnect', (data) => {
console.info('change_userId: ' + data);
socket.userId = data.userId
})
socket.on('send message', (data) => {
console.info('New user sen '+socket.id)
//var a=JSON.parse(data)
console.info('messasge: ' + data["kk"]);
io.sockets.emit('get user','sdfgsdfgsdf')
})
//listen on new_message
socket.on('new_message', async (data) => {
//broadcast the new message
let chat = chatDb.chats.find(_chat => _chat.id === data.chatId);
chat.dialog = [
...chat.dialog,
data.message
];
let userId = data.message.who;
let contactId = data.contactId;
const user = chatDb.user.find(_user => _user.id === userId);
console.info('new_message User: ' + JSON.stringify(user));
const contact = chatDb.user.find(_user => _user.id === contactId);
console.info('new_message Contact: ' + JSON.stringify(contact));
user.chatList.find(_contact => _contact.contactId === contactId).lastMessageTime = data.message.time;
contact.chatList.find(_contact => _contact.contactId === userId).lastMessageTime = data.message.time;
console.info('new_message: ' + JSON.stringify(data));
io.sockets.emit('new_message', {userId: userId, contactId: contactId, chatId: data.chatId, message: data.message});
})
//listen on typing
socket.on('typing', (data) => {
socket.broadcast.emit('typing', {userId : socket.userId, chatId: data.chatId})
})
});
console.log('Server Started')我希望我找不到答案,为什么会发生这种情况,以及如何解决。请帮帮忙
发布于 2019-02-07 18:40:18
socket_io包与Flutter不兼容。因此,您不能在颤动应用程序中使用它。
https://stackoverflow.com/questions/54570392
复制相似问题