0
index.js去Socket.emit不是通過
var app = require('express')();
var path = require('path');
var server = require('http').Server(app);
var io = require('socket.io')(server);
var users = [];
connections = [];
server.listen(process.env.PORT || 3000);
app.use(require('express').static(path.join(__dirname)));
console.log('server running');
app.get('/', function(req, res){
res.sendfile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
var addedUser = false;
socket.on('new post', function(post){
console.log(post);
socket.emit('posted', data);
});
});
client.js
$(function(){
function submit(){
socket.emit('new post', $("#text").val());
console.log("submitted");
}
function addPost(data){
console.log(2);
var $post = $('<p></p>').text(data);
console.log($post);
$("#posts").append($post);
}
$("#submit").on("click", function(){
submit();
});
socket.on('posted', function(data){
console.log(1);
addPost(data);
});
});
的index.html
<html>
<head>
<title>title</title>
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<input type="text" id="text">Input</input>
<button id="submit">Submit</button>
<script src="client.js"></script>
<br>
<br>
<br>
<div id="posts"></div>
<script>
var socket = io();
</script>
</body>
</html>
當我開始了服務器,t他控制檯日誌「服務器運行」罰款。我無法獲取提交帖子按鈕來執行任何操作。沒有任何調試控制檯消息出現,沒有任何反應。它應該被點擊提交按鈕時發出的「新崗位」,但它看起來好像什麼都沒有經過
服務器上運行的是什麼版本的socket.io?你是否獲得服務器上的連接事件? client.js中的代碼被調用來設置? – jfriend00
4.1.2,是的,我正在獲取連接事件。我在io.on('連接')之後放置了一個控制檯日誌並運行。對於你的第三個問題,你的意思是如果提交按鈕執行任何操作?如果是這樣,它確實如此。函數submit()在客戶端控制檯運行並記錄「提交」 –
我不認爲4.1.2是一個socket.io版本,所以我不知道那是什麼。 socket.io 2.0最近剛剛發佈。我試圖弄清楚在客戶端和服務器上是否有匹配的socket.io版本,因爲這可能是消息不起作用的原因。如果您將''更改爲此'那麼它會從你的服務器加載一個匹配的socket.io客戶端版本,以防你的版本不匹配。 – jfriend00