1
我正嘗試使用Node,Express(^ 4.15.3)和socket.io(^ 2.0.3)構建一個簡單的應用程序。我正在構建一個簡單的聊天應用程序,但每次添加新消息時,我都會收到額外的回覆。Node.js socket.io爲單個事件返回多個值
例如,如果第一條消息是「你好」,我將返回:
- 你好
如果我再加入一個後續消息,我「有人嗎?」回來:
- 有人在嗎?
- 有人在嗎?
等等......每當我收到額外的回覆時。
這裏是我的代碼 - 這感覺就像它的東西真的很明顯,我可能已經在太長時間盯着...
//app.js
var express = require("express");
var bodyParser = require("body-parser");
var expressValidator = require('express-validator');
var session = require('express-session');
var passport = require("passport");
var app = express();
var http = require('http');
var server = http.createServer(app);
var io = require('socket.io').listen(server);
app.use(express.static("public"));
app.set("view engine", "ejs");
server.listen(process.env.PORT || 3000, process.env.IP, function(){
console.log("Server starting...");
});
app.get('/testsocket', function(req, res){
res.render('sockets/test');
});
io.sockets.on('connection', function(socket){
console.log('Connected')
socket.on('send message', function(data){
console.log('Got the message...');
io.sockets.emit('new message', data)
});
});
然後客戶端
//client side
$(function() {
var socket = io.connect();
var $messageForm = $('#send-message');
var $messageBox = $('#message');
var $chat = $('#chat');
$messageForm.submit(function(e){
e.preventDefault();
socket.emit('send message', $messageBox.val());
$messageBox.val('');
socket.on('new message', function(data){
$chat.append(data + "<br>");
});
});
});
當然......謝謝! *有點尷尬* –