我在 node.js 中使用 socket.io 在我的天蓝色云项目中实现聊天功能。在其中,我一直在使用 node.js 将用户聊天历史记录添加到表中。当我在本地模拟器上运行它时它工作正常,但奇怪的是,当我部署到我的天蓝色云时它不起作用并且它也不会引发任何错误,所以它真的令人难以置信。下面是我的代码。
var app = require('express')()
, server = require('http').createServer(app)
, sio = require('socket.io')
, redis = require('redis');
var client = redis.createClient();
var io = sio.listen(server,{origins: '*:*'});
io.set("store", new sio.RedisStore);
process.env.AZURE_STORAGE_ACCOUNT = "account";
process.env.AZURE_STORAGE_ACCESS_KEY = "key";
var azure = require('azure');
var chatTableService = azure.createTableService();
createTable("ChatUser");
server.listen(4002);
socket.on('privateChat', function (data) {
var receiver = data.Receiver;
console.log(data.Username);
var chatGUID1 = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
var chatRecord1 = {
PartitionKey: data.Receiver,
RowKey: data.Username,
ChatID: chatGUID2,
Username: data.Receiver,
ChattedWithUsername: data.Username,
Timestamp: new Date(new Date().getTime())
};
console.log(chatRecord1.Timestamp);
queryEntity(chatRecord1);
}
function queryEntity(record1) {
chatTableService.queryEntity('ChatUser'
, record1.PartitionKey
, record1.RowKey
, function (error, entity) {
if (!error) {
console.log("Entity already exists")
}
else {
insertEntity(record1);
}
})
}
function insertEntity(record) {
chatTableService.insertEntity('ChatUser', record, function (error) {
if (!error) {
console.log("Entity inserted");
}
});
}
它在我的本地模拟器上工作,但不在云上工作,我读到在云表上创建记录时实体的 DateTime 变量不应为空。但是我很确定传递时间戳的方式很好,对吗?任何其他想法为什么它可能在本地而不是在云上工作?
编辑:
我在运行 socket.io 服务器时也遇到了这个错误,但是尽管有这个错误,socket.io 功能工作正常,所以我没有费心去关心它。我不知道这个错误首先意味着什么。
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' }