javascript - 尝试让示例 Node.js 应用程序正常运行

标签 javascript node.js express

我正在尝试运行一个使用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> 

最佳答案

删除 app.get(socketstuff) 部分,您不需要它,因为 js 文件可供您使用

<script src="/socket.io/socket.io.js"></script>

并将套接字变量更改为:

var socket = io.connect();

关于javascript - 尝试让示例 Node.js 应用程序正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15512447/

相关文章:

javascript - 当 iframe src 更改时如何运行函数?

node.js - 在 Node.js Azure 函数中检索服务总线消息的属性

javascript - 函数参数被覆盖

node.js - 如何在 electron 中运行 express?

javascript - 始终从 ExpressJS 默认错误处理程序返回 JSON 数据

javascript - 如何在创建时或创建后向 svg 添加 data-* 属性

javascript - getBoundingClientRect 在 Chrome 中返回相同的值

javascript - 启用 "storage"权限后调试模块无法在事件页面中工作

node.js - Azure Functions 使用 Node 强大解析表单数据

javascript - 在 promise 链中使用 await