gpt4 book ai didi

node.js - 使用 socket.io、node.js 和 mongodb 更新服务器端的 ejs 变量

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:41 25 4
gpt4 key购买 nike

我正在使用 mongodb 和 mongoose 来维护跨客户的股票列表。当一个用户进行更改时,我想使用 socket.io 同时更新列表。我可以连接到套接字并更新客户端 JavaScript,但不能更改服务器端的变量。

app.js - 服务器

// connect to socket.io
io.on('connection', function (socket) {
console.log('Client Connected..');

///retrieve new stock from client
socket.on('submitStock', function (data) {
console.log(data);
///do mongodb stuff here

///send new stocks to all clients
socket.emit('activeStocks', data);
});
});

script.js - 客户端

var socket = io.connect();

///connect to socket
socket.on('connect', function (data) {
socket.emit('join', 'Hello World from client');
});

///use submit button to send the new stock to server
$('#addStock').on('submit', function(e){
//var stockList = $('#stockList');
socket.emit('submitStock', 'here is the data');
});

//retrieve the new stock from the server and update list
socket.on('activeStocks', function(data) {
//how to update activeStocks here??
console.log(data);
});

索引.ejs

<% if (message.length > 0) { %>
<div class="alert alert-danger"><p><%= message %></p></div>
<% } %>

<div class="container">
<form id="addStock" action="/add" method="post">
<div class="form-inline">
<input type="text" class="form-control" name="stockTicker" placeholder="Enter a stock ticker">
<button type="submit" class="btn btn-primary"><span>Add Stock</span></button>
</div>
</form>
</div>

<% if (activeStocks) { %>
<% for (var i=0; i< activeStocks.length; i++) { %>
<div> <%- activeStocks[i] %></div>
<% } %>
<% } %>

最佳答案

  1. 假设我们在index.js中有一个div,让它为<div id="stocks"> ,
  2. data是一个字符串数组,

尝试以下代码:

socket.on('activeStocks', function(data) {
document.getElementById('stocks').innerHTML = '';
data.forEach( function (stock) {
document.getElementById('stocks').innerHTML += stock + '<br>';
});
});

关于node.js - 使用 socket.io、node.js 和 mongodb 更新服务器端的 ejs 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44887059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com