我正在尝试运行一个使用 node.js、express 和 socket.io 的基本聊天应用程序。我已经成功地让所有东西都运行到我在服务器端或客户端没有出现任何错误的地方。但是,该应用程序不起作用。
我应该能够打开两个浏览器窗口并与自己聊天。我在文本框中键入以向自己发送聊天消息,但没有收到任何消息。我很确定也没有发送任何内容。使用 FireBug,我看不到任何通过网络发送的新请求。但是,使用 Firebug 我还看到所有请求的包含文件都正确地提供给浏览器。只有三个 - index.html、socket.io.js 和 jquery.min.js。
这是我正在使用的教程的链接:http: //philmunt.com/post/15643013618/node-js-socket-io-chat-application-tutorial
使用 server.js 文件,我对其进行了一些修改以使其正常工作。主要问题是我的浏览器没有接收到 socket.io.js,所以我添加了一个路径以允许 server.js 知道它在哪里。像这样: app.get('/sio/socket.io.js', function (req, res) {........这可能是我的问题吗?
这是服务器代码 - server.js:
var express = require('express'), app = express(), http = require('http'), server = http.createServer(app), io = require('socket.io').listen(server);
// listen for new web clients:
server.listen(8080);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
app.get('/sio/socket.io.js', function (req, res) {
res.sendfile('/root/nodejs/node-v0.10.0/node_modules/socket.io/lib/socket.io.js');
});
io.sockets.on('connection', function (socket) { socket.on('sendMessage', function (data) { socket.broadcast.emit('message', data); socket.emit('message', { text: '<strong>'+data.text+'</strong>' });
});
});
这是 index.html 文件:
<html>
<body>
<script src="/sio/socket.io.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
var socket = io.connect('http://localhost');
socket.on('message', function (data) {
$('#chat').append(data.text + '<br />');
});
$('#send').click(function () {
socket.emit('sendMessage', { text: $('#text').val() });
$('text').val('');
});
});
</script>
<div id="chat" style="width: 500px; height: 300px; border: 1px solid black">
</div>
<input type="text" name="text" id="text">
<input type="button" name="send" id="send" value="send">
</body>
</html>