我的服务器想要在连接时向客户端发送消息。然后客户端向服务器发送消息。
当客户端向服务器发送消息时,我的代码工作正常,但客户端未收到服务器应在连接时发送的初始消息。
这是我的小代码:)
服务器
var app = require('http').createServer(handler),
io = require('socket.io').listen(app, { log: false }),
fs = require('fs');
app.listen(8001);
function handler(req, res) {
fs.readFile(__dirname + '/client1.html', function(err, data) {
if (err) {
console.log(err);
res.writeHead(500);
return res.end('Error loading client1.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
console.log("running time");
socket.emit("serverMessage","server says hi");
socket.on('clientMessage', function () {
console.log("client message recieved");
});
});
客户端
<html>
<head>
<script src="/socket.io/socket.io.js"></script>
<script>
socket = io.connect("http://localhost:8001");
socket.on('connection', function(socket) {
socket.on("serverMessage", function(d) {
console.log("server send a message ");
});
});
function send() {
socket.emit('clientMessage', "Test Message From Client");
}
</script>
</head>
<body>
<button onclick="send()" >send</button>
</body>
请帮忙吗?
答案 0 :(得分:4)
您的客户端代码中存在一个简单错误。客户端没有名为connection
的事件。而是名称connect
。在客户端执行此操作:
<script>
socket = io.connect("http://localhost:8001");
</script>
<script>
socket.on('connect', function(socket) {
socket.on("serverMessage", function(d) {
// you can alert something here like alert(d)
console.log("server send a message ");
});
});
</script>