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