使用 Node.js 的 WebSocket

发布于 2024-12-08 04:43:44 字数 1283 浏览 0 评论 0原文

我正在尝试使用 WebSocket 示例来开发简单的聊天。

server.js

var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')

app.listen(8080);

function handler (req, res) {
   fs.readFile(__dirname + '/test.html',
   function (err, data) {
      if (err) {
        res.writeHead(500);
        return res.end('Error loading index.html');
      }

    res.writeHead(200);
    res.end(data);
  });
}

test.html

<script src="/socket.io/socket.io.js"></script>
<script>
 var socket = io.connect('http://localhost');

 socket.on('connect', function() {
  alert('<li>Connected to the server.</li>');
 });

 socket.on('message', function(message) {
    alert(message);
 });

 socket.on('disconnect', function() {
   alert('<li>Disconnected from the server.</li>');
 });

 function sendF(){
    var message = "Test";
    socket.send(message);
    alert('Test Send');     
}

test.html 中,我还有一个简单的按钮,onClick 调用 sendF

如果我尝试这样做,当我连接、发送和断开连接时,我会在浏览器上看到一条警报,如果我检查控制台,我会看到该消息。

但我无法从服务器收到相同的响应消息,无法在我的浏览器中显示它!我认为 socket.on('message'... 不适合我!

I'm trying an example of WebSocket to develop a simple chat.

server.js:

var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')

app.listen(8080);

function handler (req, res) {
   fs.readFile(__dirname + '/test.html',
   function (err, data) {
      if (err) {
        res.writeHead(500);
        return res.end('Error loading index.html');
      }

    res.writeHead(200);
    res.end(data);
  });
}

and test.html:

<script src="/socket.io/socket.io.js"></script>
<script>
 var socket = io.connect('http://localhost');

 socket.on('connect', function() {
  alert('<li>Connected to the server.</li>');
 });

 socket.on('message', function(message) {
    alert(message);
 });

 socket.on('disconnect', function() {
   alert('<li>Disconnected from the server.</li>');
 });

 function sendF(){
    var message = "Test";
    socket.send(message);
    alert('Test Send');     
}

In test.html I have also a simple button that onClick call sendF.

If I try it I see on my browser an alert when I CONNECT, SEND, and DISCONNCT, and if I check in console, I see the message.

But I cannot receive the same message in response from server, to show it in my browser! I think socket.on('message'... is not working for me!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

波浪屿的海角声 2024-12-15 04:43:44

您的 server.js 缺少事件侦听器。它还缺少您发送要在浏览器中显示的消息的位置。

io.sockets.on('connection', function (socket) {
  console.log('user connected');
  socket.send('hello world');
  socket.on('disconnect', function () {
    console.log('user disconnected.');
  });
  socket.on('message', function (data) {
    console.log(data);
  });
});

Your server.js is missing event listeners. It's also missing where you are doing the send of the message to be displayed in the browser.

io.sockets.on('connection', function (socket) {
  console.log('user connected');
  socket.send('hello world');
  socket.on('disconnect', function () {
    console.log('user disconnected.');
  });
  socket.on('message', function (data) {
    console.log(data);
  });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文