【发布时间】:2015-07-22 21:06:48
【问题描述】:
我在 GoDaddy 有网站托管。 我在 DigitalOcean 有 VPS。
我要去我的网站(在 GoDaddy 托管)并有一个输入字段(我们将其命名为贸易链接字段,因为它应该包含 URL)。
用户将 URL 放入“trade-link”字段 > 按“保存”按钮 > 数据正在通过 Websocket 发送到 VPS(在 DigitalOcean)> 数据正在保存在 MongoDB 中。
最后一步不起作用。 我有一个小代码记录控制台上的内容:
{"type":1,"steamid":"76561198092387621","link":"steamcommunity.com/tradeoffer/new/?partner=THISISURL";}
所以服务器正在接收数据,这很好。现在有问题。此数据需要保存到 MongoDB。
让我们开始在我的网站 (GoDaddy) 上输入字段:
<input type="text" rel="get-trade-link" id="par2" name="par2" placeholder="https://steamcommunity.com/tradeoffer/new/?partner=URL">
<div class="btn-yellow save-link">
然后是 script.js 文件(Godaddy):
var socket = io.connect('http://url:8303');
ws = new WebSocket('ws://url:8305');
function sendTradeLink(tradelink){
ws.send(JSON.stringify({
type: 1,
steamid: getSteamID(),
link: tradelink
}));
}
$(document).on('click', '.save-link', function() {
var link = $('input[rel="get-trade-link"]').val();
if (link.indexOf('https://steamcommunity.com/tradeoffer/new/?partner=') < 0) {
} else {
sendTradeLink(link);
}
}
});
VPS:
var io = require('socket.io').listen(8303);
// all another
var MongoClient = require('mongodb').MongoClient;
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({ port: 8305 });
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('received: %s', message);
});
ws.send('something');
});
socket.on('1', function(data){
updateTradeLink(data.steamid, data.link);
});
'1' - 我认为它的意思是'类型'。不是我的剧本,是我买的,但是很难跟他交流。
socket.on('link', function(data){
userListDB.find({'steamid':data.steamId, 'type' : 'link'}).toArray(function(err, list) {
socket.emit('link', { list : list });
});
});
function updateTradeLink(sid, link) {
if(!g_Mongoconnected)
return 0;
existUser(sid, function(exist){
if(exist) {
userListDB.update({steamid: sid}, {steamid: sid, tradelink: link, type : 'link'});
} else {
userListDB.insert({steamid: sid, tradelink: link, type : 'link'}, {w:1}, function(err) {
if(err) {
helper.log('Error inserting tradelink', 485, err);
}
});
}
});
}
P.S 我买了那个脚本并自己添加了那部分代码:
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({ port: 8305 });
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('received: %s', message);
});
ws.send('something');
});
编辑:
MongoClient.connect('mongodb://localhost:27017', function (err, db) {
if (err) {
helper.log('Mongodb connection error', 425, err);
return 0;
}
userListDB = db.collection('users');
gameDB = db.collection('gamedb');
g_Mongoconnected = true;
helper.msg('mongo connected');
gameDB.find({name: 'counter'}).toArray(function (error, list) {
if(list.length == 0) {
currentGame=0;
gameDB.insert({name: 'counter', counter: 0}, {w:1}, function(err) {if(err) console.log('Error <1>');});
} else {
currentGame = list[0].counter;
}
});
});
【问题讨论】:
-
与其对代码进行快照,不如将代码直接粘贴到您的问题中。使用顶部的 { } 图标添加降价编码。让人们更容易为您提供帮助。
-
我当然迷路了。你到底想完成什么?什么不按您期望的方式工作?什么是交易 URL(我会用一个 Yahoo 换两个 Google?)你为什么首先使用套接字?套接字是最好的方法吗?服务器托管在哪里?他们是否支持带有套接字的 Node.js? (等等...)
-
它是一个与 CS:GO 相关的网站。您需要设置您的交易网址:如 steamcommunity.com/tradeoffer/new/?partner=something 等。 1. 您访问网站并设置您的交易网址。 2. 我通过 Websocket 连接到服务器获取该 url。 3.它需要保存到MongoDB,但它没有。如您所见,我正在获取这些 URL,但它没有保存到 MongoDB
-
“有人在我的网站上放了一个链接”吧?这是您托管的服务器,还是您创建的网站,托管在 steamcommunity 上?如果它是您的主机,为什么还要使用套接字?从您的站点提交的数据中获取数据并将其粘贴到 Mongo 中。如果在 Steam 社区,你怎么知道他们甚至允许套接字连接?大多数服务器没有。
-
我在 Godaddy 主机上托管网站,这是允许的。我买了脚本,需要配置它,卖给我的人说不同的语言,很难理解他在说什么。
标签: node.js mongodb websocket socket.io steam